我想知道是否有一种方法(在 Windows 上)通过单击超链接启动预安装的应用程序。举一个基本的例子:
用户在他们的机器上安装了一个名为 SuperPing 的应用程序。如果他们在浏览器中单击具有以下 URL 的链接,它将启动该应用程序。
SPing://8.8.4.4
这会导致以下情况发生:
"C:\SuperPing.exe" /ip 8.8.4.4
所以我的问题实际上是,创建此 Hook 的方式是什么,以根据 URL 使事情发生。这与 iPhone 在正确连接到链接时可以启动特定应用程序的方式非常相似。
最佳答案
您可以在安装应用程序时注册自定义 URL 处理程序。参见 MSDN获取更多信息。
以下是该页面的相关摘录:
要注册应用程序来处理特定的 URI 方案,请将新键以及适当的子键和值添加到 HKEY_CLASSES_ROOT
。根 key 必须与添加的 URI 方案相匹配。例如,要添加一个alert:
方案,将alert
键添加到HKEY_CLASSES_ROOT
,如下所示:
HKEY_CLASSES_ROOT
alert
URL Protocol = ""
在此新键下,URL Protocol
字符串值表示此键声明了自定义可插入协议(protocol)处理程序。没有这个 key ,处理程序应用程序将不会启动。该值应为空字符串。
还应为 DefaultIcon
和 shell
添加键。 DefaultIcon
键的 Default
字符串值必须是用作此新 URI 方案图标的文件名。该字符串采用 path, iconindex
的形式,最大长度为 MAX_PATH
。 shell
键下第一个键的名称应该是一个 Action 动词,例如open
。在此键下,command
键或 DDEEXEC
键指示应如何调用处理程序。 command
和 DDEEXEC
键下的值描述了如何启动处理新协议(protocol)的应用程序。
最后,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 方案注册的可插入协议(protocol)处理程序。如果在注册表中指定的指定 open
命令包含 %1
参数,Internet Explorer 会将 URI 传递给已注册的可插入协议(protocol)处理程序应用程序。
因此,在您的情况下,您需要添加此 key :
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
一样简单(不需要 ://
)。
关于c# - 从超链接启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24782934/