【问题标题】:Custom protocol handler (URI) in HTMLHTML 中的自定义协议处理程序 (URI)
【发布时间】:2014-12-16 17:17:43
【问题描述】:

我想在 html 中使用自定义协议处理程序来启动带有参数的程序。

我在 HKEY_CLASSES_ROOT 中创建了一个名为 EchoMe 的密钥,其中包含 URL Protocol = "" 和一个 EchoMe/shell/open/command 密钥(默认)= "c:\testapp\echome.exe" "%1" "% 2"。

echome.exe 可以有参数--echo-me text 将其返回(例如'C:\testapp\echome.exe --echo-me text' 打开程序并回显'test')

现在我不知道如何在 HTML 中体面地调用它。

到目前为止,我已尝试传递 2 个参数(例如 href="EchoMe:--echo-me Test"),但这似乎与看起来一样错误。

我还尝试只传递一个参数并更改调用本身(打开/命令键(默认)= "C:\testapp\echome --echo-me " "%1" 并将 html 更改为 href=" EchoMe:test" 但仍然没有出现在我的窗口中。

我很确定问题出在 HTML 中,但我找不到任何有用的信息

【问题讨论】:

  • 您是否看过“将应用程序注册到 URI 协议”(msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx)?这似乎很有描述性。此外,为了获得最佳效果,请考虑以小写形式注册。混合大小写很难记住,并且随着时间的推移容易混淆。 (这是我的经验;您的可能会有所不同)。
  • 我使用该 kb 创建初始注册表项。调用本身并不是真正的问题(单击链接运行程序),但将参数传递给它似乎根本不起作用。遗憾的是,kb 没有像样的 html href 调用将参数“--echo-me ”传递给我正在寻找的程序的示例。当然只使用小写字母是个好主意,我会在我的注册表中更改它
  • 我创建了一个只回显 %1 的批处理文件,显然我的问题是:当我使用 href="EchoMe://" 批处理收到 "EchoMe:// " 而不仅仅是我希望它接收的 。是否有可能只交出前面没有 EchoMe:// 东西的

标签: html protocols handler


【解决方案1】:

您必须在此处使用 URL 编码。所以这个

C:\testapp\echome --echo-me

会变成这样:

C%3A%5Ctestapp%5Cechome%20--echo-me

在 JS 中,你可以使用 encodeURIComponent(str) 和 encodeURI(str)。

【讨论】:

  • 感谢您的提示,但恐怕我不太确定该放在哪里?我假设 HTML 只得到类似“echome://text”的东西,而注册表将调用程序并交出文本。在注册表中使用 url 编码似乎也不起作用。
猜你喜欢
  • 2012-07-10
  • 2011-10-28
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2011-09-10
相关资源
最近更新 更多