URI方案启动

Sat*_*tes 16 windows delphi uri

我已经被赋予了一个创建类似于callto的协议的任务:在点击链接时会自动启动已安装的应用程序.

我按照微软指南查看了一个方案应该是什么样子.

我的计划如下:

HKEY_CLASSES_ROOT
   slican
       URL Protocol = ""
       DefaultIcon (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe,1"
       shell
            open
                command (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe" "%1""
Run Code Online (Sandbox Code Playgroud)

我认为这就是全部并经过测试

 <a href="slican:test">test link</a>
 <a href="slican:0049325778421">test telephone link</a>
Run Code Online (Sandbox Code Playgroud)

没有任何反应.Internet Explorer问我是否要搜索可以打开内容的程序,Chrome没有回复,就像我点击了javascript:void(0).

如何让它工作?

谢谢您的帮助!

Rem*_*eau 22

当我在Windows 7上尝试时,您显示的注册对我来说非常合适.当我slican:Start | Run菜单中调用URL 并从Windows资源管理器的地址栏中调用时,我注册的本地应用程序代替SlicanP.exe运行正常.所以注册工作.

请注意,Internet Explorer在较低完整性的安全上下文中运行,因此它可能无权运行本地程序.当我尝试单击指向slican:URL 的HTML链接或slican:在地址栏中键入URL时,IE无法执行本地应用程序(即使在提示权限之后).我不得不以管理员身份运行IE,然后本地应用程序运行得很好.

另外,你真的不应该HKEY_CLASSES_ROOT\slican直接创建一个密钥.改为创建HKEY_CURRENT_USER\Software\Classes\slican(仅限当前用户)或HKEY_LOCAL_MACHINE\Software\Classes\slican(所有用户).有关更多详细信息,请参阅MSDN:

HKEY_CLASSES_ROOT键

HKEY_CLASSES_ROOT的合并视图

更新:由于它可以在Windows 7中运行,因此Microsoft可能更改了在Windows 8中注册URL方案的方式.例如,电话/商店应用程序使用URI激活:

URI激活(XAML).

URI激活(HTML)

文档说有两种注册自定义URI方案的方法:

Internet Explorer使用两种机制来注册新的可插入协议处理程序.第一种方法是注册URI方案名称及其关联的应用程序,以便使用该方案导航到URI的所有尝试都启动应用程序(例如,注册应用程序以处理mailto:或news:URI).第二种方法使用异步可插入协议API,它允许您通过将URI方案映射到类来定义新协议.

你正在做第一个.尝试使用第二个.

但是,我刚刚注意到"异步可插入协议"在MSDN的"Legacy API"部分中列出,它有以下注释:"第三方协议实现不会在使用JavaScript的Windows应用商店应用中加载,或者在新Windows窗口中的Internet Explorer." 因此它可能适用于Windows 8,也可能不适用.

更新:我刚发现:

文件类型和URI的准则

在Windows 8中,应用程序与它们支持的文件类型之间的关系与以前版本的Windows不同.

演练:使用Windows 8自定义协议激活

Windows 8中的文件类型和协议关联模型已更改.应用程序无法再以编程方式将自身设置为文件类型或协议的默认处理程序.相反,现在用户总是控制文件类型或协议的默认处理程序.

您的应用可以使用现有协议进行通信,例如mailto,或创建自定义协议.协议激活扩展允许您定义自定义协议或寄存器以处理现有协议.

还看看这个:

在Windows 8中以编程方式设置mailto:protocol handler

还有这个:

默认程序