3

我正在编写一个协议处理程序来启动一个 java 应用程序,调用一个类似 java -jar myApp '%1' 的命令。目前我已经为 Chrome 实现了它,它看起来工作正常。不幸的是,我对 Firefox 和 IE 没有相同的行为(奇怪啊?!XD)

这是我的实现。

该协议名为 dgh。在第一次安装期间,我的应用程序在 Windows 注册表中设置了以下键

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\dgh]
@="URL:DgHome  Protocol"
"URL Procol"=""

[HKEY_CLASSES_ROOT\dgh\DefaultIcon]
@="C:/DGHOME/IPlusConf.exe,1"

[HKEY_CLASSES_ROOT\dgh\shell]

[HKEY_CLASSES_ROOT\dgh\shell\open]

[HKEY_CLASSES_ROOT\dgh\shell\open\command]
@="java -jar C:/DGHOME/Pch/lib/pch.teleconsulto.jar \"%1\""

在铬上这就足够了。在 Firefox 上,我必须在about:config中添加一些配置。在 Firefox 上遵循 MDN 我设置以下

network.protocol-handler.expose.dgh;true
network.protocol-handler.external.dgh;true
network.protocol-handler.warn-external.dgh;false

这样,firefox 至少会问我是否要启动应用程序并要求我选择一个:我不想要那个,我会调用我设置的命令并在第一次通知用户时告诉用户:

在 IE 上没有任何反应,它说无法通过我的链接打开网页引用。

这是我用作测试的一组链接

<a href="dgh://call/open?id='kit1.teleconsulto'">Open call to kit1.teleconsulto</a>
<a href="dgh://teleconsult/start?id='kit1.teleconsulto'">
   Open teleconsult to kit1.teleconsulto</a>
<a href="dgh://call/close">Close call</a>
<a href="dgh://call/end">Close client</a>
<a href="dgh://stethoscope/start">On Phonendo</a>

这里有一些参考: 安装和注册协议处理程序 http://msdn.microsoft.com/en-us/library/aa767916%28VS.85%29.aspx

我真诚地希望有人可以帮助我

4

2 回答 2

1

您遇到的问题是您直接在协议处理程序中调用 jar。您需要使用 -jar 参数调用 java.exe

您的注册表项应如下所示

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\digitalmgi]
@="URL:digitalmgi protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\digitalmgi\DefaultIcon]
@="C:\\myCoolIcon.ico"

[HKEY_CLASSES_ROOT\digitalmgi\Shell]

[HKEY_CLASSES_ROOT\digitalmgi\Shell\Open]

[HKEY_CLASSES_ROOT\digitalmgi\Shell\Open\Command]
@="\"C:\\Program Files\\Java\\jre7\\bin\\java.exe\" -jar \"C:\\MyPath\\myJar.jar\" \"%1\""
于 2013-11-06T14:27:00.997 回答
0

我了解您采用了在系统注册表中注册的方法,但是,如果您愿意采用不同的方法,那么Generic-Protocol-Handler提供了一个通用解决方案,它肯定会解决跨浏览器兼容性问题。

如果有帮助,请将此标记为答案:)

于 2013-11-18T04:32:44.353 回答