如何创建一个“自定义协议”并将其映射到应用程序?

10
如何创建“自定义协议”?我知道可以通过在HKEY_CLASSES_ROOT添加一系列注册表条目来创建URL协议,但这似乎只适用于浏览器。我需要它在Windows资源管理器中也能工作。
我知道我可以编写客户端/服务器类型的接口,但我认为这对我的客户需求(和预算)来说过于复杂了。
长话短说...
第三方应用程序应该调用: tbwx:<row_id> 我的应用程序应该从数据库加载并删除记录。
听起来相当简单(或者我是这么认为的)。有什么建议吗?
谢谢。

你有研究过套接字编程吗? - kenny
2个回答

16
只要在类的键中添加类型为REG_SZ的URL协议值,就可以创建自定义协议。它不需要实际值,只需要存在即可。这是我刚刚创建的一个简单示例“Echo Protocol”,可以在Windows Explorer中使用。
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\echo]
"URL Protocol"=""
@="Echo Protocol"

[HKEY_CURRENT_USER\SOFTWARE\Classes\echo\shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\echo\shell\open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\echo\shell\open\command]
@="C:\\WINDOWS\\SYSTEM32\\CMD.EXE /Q /C (echo %1) && pause"

然后,如果您在Windows资源管理器(或运行菜单)中键入以下路径:

enter image description here

enter image description here

它甚至可以在浏览器中使用,您只需要像任何其他协议一样确认即可: 输入图像描述 输入图像描述

它应该运行以下命令:

enter image description here

我发现它也适用于键 HKCRHKLM\Software\Classes


那正是我所达到的程度。在IE中它运行得很好,但在Windows Explorer中根本不起作用。我希望能够简单地调用我的协议(并让它反过来调用我的应用程序),而无需通过IE调用它。 - Brandon Osborne
我不知道该说什么了。 “它在我的机器上运行正常。”(Windows 7 Pro x64)你也在运行这个吗?以上对你有效吗? - Jeff Mercado
是的。我正在使用7 Ultimate x64。你是如何调用echo的?我问这个问题是因为echo实际上是一个DOS命令,所以如果在cmd提示符中键入它,甚至在开始菜单中键入它(取决于您的%PATH%变量设置方式),它会返回一些内容。你可能已经知道了这一点,但我想再次确认,因为我已经挣扎了半夜。 - Brandon Osborne
安装了“回音协议”后,我只是进入资源管理器并输入了 echo:foo,它会打印出 echo:foo 并暂停。由于无法直接调用它,我通过 cmd.exe 调用了 echo。另外,我最初正在测试“Txt协议”,该协议应该在记事本中打开文件。由于它总是在参数中保留协议名称,我不想处理字符串操作来打开文件,所以它没有起作用。 - Jeff Mercado
啊...一个人永远不能太确定。我只是想确保你在echo后面没有忘记加冒号。另一个网站上的一些“天才”发誓说你不需要它。哈哈。无论如何,你是对的,它很好用,就像我两三天前开始编码时一样。Google桌面一直拦截我所输入的内容,无法识别并弹出了一个搜索框。:|我在另一台没有安装Google桌面的电脑上尝试了一下,没有出现问题。 - Brandon Osborne
啊,那就解释了。很高兴看到你弄清楚了。 ;) - Jeff Mercado

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接