从超链接启动应用程序

时间:2014-07-16 14:06:16

标签: c# .net

我想知道是否有办法(在Windows上)导致预先安装的应用程序从点击超链接启动。一个基本的例子:

用户在其计算机上安装了名为SuperPing的应用程序。如果他们使用以下URL点击浏览器中的链接,则会启动应用程序。

SPing://8.8.4.4

这会导致以下情况发生:

"C:\SuperPing.exe" /ip 8.8.4.4

所以我的问题是,创建这个钩子的方法是什么,以便根据URL来实现。这与iPhone在正确连接到链接时启动特定应用程序的方式非常相似。

1 个答案:

答案 0 :(得分:4)

您可以在安装应用程序时注册自定义URL处理程序。有关详细信息,请参阅MSDN

以下是该页面的相关摘录:


要注册应用程序以处理特定URI方案,请将新密钥以及相应的子密钥和值添加到HKEY_CLASSES_ROOT。根密钥必须与要添加的URI方案匹配。例如,要添加alert:方案,请向alert添加HKEY_CLASSES_ROOT密钥,如下所示:

HKEY_CLASSES_ROOT
   alert
      URL Protocol = ""

在此新密钥下,URL Protocol字符串值表示此密钥声明了自定义可插入协议处理程序。如果没有此密钥,处理程序应用程序将无法启动。该值应为空字符串。

还应为DefaultIconshell添加密钥。 Default键的DefaultIcon字符串值必须是用作此新URI方案的图标的文件名。该字符串采用path, iconindex格式,最大长度为MAX_PATHshell键下的第一个键的名称应为动作谓词,例如open。在此键下,command键或DDEEXEC键指示应如何调用处理程序。 commandDDEEXEC键下的值描述了如何启动处理新协议的应用程序。

最后,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一样简单(不需要://)。