如何创建“自定义协议”并将其映射到应用程序?
Posted
技术标签:
【中文标题】如何创建“自定义协议”并将其映射到应用程序?【英文标题】:How do I create a "custom protocol" and map it to an application? 【发布时间】:2011-04-27 05:19:43 【问题描述】:如何创建“自定义协议”?我知道您可以通过向 HKEY_CLASSES_ROOT 添加一些注册表项来创建 URL 协议,但这似乎只适用于浏览器。我也需要它在 Windows 资源管理器中工作。
我知道我可以编写客户端/服务器类型的接口,但我认为这对于我客户的需求(和预算)来说是多余的。
长话短说……
第三方应用程序应调用:tbwx:<row_id>
我的应用程序应该从数据库中加载和删除一条记录。
这听起来很简单(或者我是这么认为的)。有什么想法吗?
谢谢
【问题讨论】:
你研究过套接字级编程吗? 【参考方案1】:只要将REG_SZ
类型的URL Protocol
值添加到类的键中,就可以创建自定义协议。它不需要实际值,只需要存在即可。这是我刚刚创建的“回声协议”的一个简单示例,可在 Windows 资源管理器中使用。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\echo]
"URL Protocol"=""
@="Echo Protocol"
[HKEY_CLASSES_ROOT\echo\shell]
[HKEY_CLASSES_ROOT\echo\shell\open]
[HKEY_CLASSES_ROOT\echo\shell\open\command]
@="C:\\WINDOWS\\SYSTEM32\\CMD.EXE /Q /C (echo %1) && pause"
然后,如果您在 Windows 资源管理器(或运行菜单)中输入路径:
它甚至应该可以在浏览器中使用,您只需像任何其他协议一样进行确认:
它应该运行命令:
我发现它也可以在键 HKCU\Software\Classes
和 HKLM\Software\Classes
中使用。但是,它并未列在Control Panel\Programs\Default Programs\Set Associations
列表中。其他密钥可能需要更新,或者必须以某种方式在 Windows 中注册。
这似乎一直持续到 Windows 10 甚至 11。
【讨论】:
这正是我所得到的。这在 IE 中工作得很好,但在 Windows 资源管理器中根本不起作用。我希望能够简单地调用我的协议(并让它反过来调用我的应用程序),而不必通过 IE 调用它。 我不知道该说什么。 “它适用于我的机器。” (Windows 7 Pro x64)你也在 7 上运行它吗?以上对你有用吗? 是的。我正在使用 7 Ultimate x64。你到底是怎么称呼回声的?我问的原因是因为 echo 实际上是一个 DOS 命令,因此如果在 cmd 提示符下输入,甚至在您输入开始菜单时(取决于您的 %PATH% var 的设置方式),它都会返回一些内容。你已经知道这一点了,但我想仔细检查一下,因为我半夜都在用头撞墙。 安装“回声协议”后,我进入资源管理器并输入echo:foo
,它会打印出echo:foo
并暂停。我打电话给echo
到cmd.exe
,因为我不能直接打电话。此外,我最初是在测试应该在记事本中打开文件的“Txt 协议”。它不起作用,因为它总是将协议名称留在参数中,我不想处理字符串操作来打开文件。
啊……永远不能太确定。我只是确保你没有忘记在 echo 后面加上冒号。另一个网站上的一些“天才”发誓你不需要它。哈哈。无论如何,你是对的,它工作得很好,就像我两天前开始编码时一样。 Google 桌面拦截了我输入的内容,但无法识别它并弹出一个搜索框。 :|我在另一台没有 Google 桌面的计算机上尝试过,没有任何问题。【参考方案2】:
Registering an Application to a URL Protocol 文章详细介绍了该过程。 GitHub上有一个utility,可以用来注册自定义URL协议。提供源代码。
【讨论】:
以上是关于如何创建“自定义协议”并将其映射到应用程序?的主要内容,如果未能解决你的问题,请参考以下文章