我想知道是否有办法(在Windows上)导致预先安装的应用程序从点击超链接启动。一个基本的例子:
用户在其计算机上安装了名为SuperPing的应用程序。如果他们使用以下URL点击浏览器中的链接,则会启动应用程序。
SPing://8.8.4.4
这会导致以下情况发生:
"C:\SuperPing.exe" /ip 8.8.4.4
所以我的问题是,创建这个钩子的方法是什么,以便根据URL来实现。这与iPhone在正确连接到链接时启动特定应用程序的方式非常相似。
答案 0 :(得分:4)
您可以在安装应用程序时注册自定义URL处理程序。有关详细信息,请参阅MSDN。
以下是该页面的相关摘录:
要注册应用程序以处理特定URI方案,请将新密钥以及相应的子密钥和值添加到HKEY_CLASSES_ROOT
。根密钥必须与要添加的URI方案匹配。例如,要添加alert:
方案,请向alert
添加HKEY_CLASSES_ROOT
密钥,如下所示:
HKEY_CLASSES_ROOT
alert
URL Protocol = ""
在此新密钥下,URL Protocol
字符串值表示此密钥声明了自定义可插入协议处理程序。如果没有此密钥,处理程序应用程序将无法启动。该值应为空字符串。
还应为DefaultIcon
和shell
添加密钥。 Default
键的DefaultIcon
字符串值必须是用作此新URI方案的图标的文件名。该字符串采用path, iconindex
格式,最大长度为MAX_PATH
。 shell
键下的第一个键的名称应为动作谓词,例如open
。在此键下,command
键或DDEEXEC
键指示应如何调用处理程序。 command
和DDEEXEC
键下的值描述了如何启动处理新协议的应用程序。
最后,Default
字符串值应包含新URI方案的显示名称。以下示例显示如何在此情况下注册应用程序alert.exe
以处理警报方案。
HKEY_CLASSES_ROOT
alert
(Default) = "URL:Alert Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "alert.exe,1"
shell
open
command
(Default) = "C:\Program Files\Alert\alert.exe" "%1"
当用户单击包含您的自定义URI方案的链接时,Windows Internet Explorer将启动为该URI方案注册的可插入协议处理程序。如果注册表中指定的指定open
命令包含%1
参数,则Internet Explorer会将URI传递给已注册的可插入协议处理程序应用程序。
因此,在您的情况下,您需要添加此密钥:
HKEY_CLASSES_ROOT
SPing
(Default) = "URL:SPing Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "SuperPing.exe,1"
shell
open
command
(Default) = "C:\SuperPing.exe" /url "%1"
然后,您将修改您的应用程序以获取“/ url”命令行参数,该参数将填充用于启动应用程序的完整URL(因此它不会自动拆分URL后面的部分)。
语法取决于您,但它会像SPing:8.8.4.4
一样简单(不需要://
)。