我正在编写一个协议处理程序来启动Java应用程序,调用像java -jar myApp '%1'这样的命令。目前我已经为 Chrome 实现了它,它看起来工作得很好。不幸的是,我对火狐和IE的行为不同(奇怪呃?!X-D (
这是我的实现。
该协议名为 dgh。在第一次安装期间,我的应用程序在Windows注册表中设置了以下项
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTdgh]
@="URL:DgHome Protocol"
"URL Procol"=""
[HKEY_CLASSES_ROOTdghDefaultIcon]
@="C:/DGHOME/IPlusConf.exe,1"
[HKEY_CLASSES_ROOTdghshell]
[HKEY_CLASSES_ROOTdghshellopen]
[HKEY_CLASSES_ROOTdghshellopencommand]
@="java -jar C:/DGHOME/Pch/lib/pch.teleconsulto.jar "%1""
在铬上,这就足够了。在 Firefox 上,我不得不在 about:config 中添加一些配置。在火狐浏览器上的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
真诚希望有人能帮助我
您遇到的问题是直接在协议处理程序中调用 jar。您需要使用 -jar 参数调用 java.exe
您的注册表项应如下所示
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTdigitalmgi]
@="URL:digitalmgi protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOTdigitalmgiDefaultIcon]
@="C:\myCoolIcon.ico"
[HKEY_CLASSES_ROOTdigitalmgiShell]
[HKEY_CLASSES_ROOTdigitalmgiShellOpen]
[HKEY_CLASSES_ROOTdigitalmgiShellOpenCommand]
@=""C:\Program Files\Java\jre7\bin\java.exe" -jar "C:\MyPath\myJar.jar" "%1""
您已经采取了在系统注册表中注册的方法,但是,如果您愿意采取不同的方法,那么,通用协议处理程序中有一个通用解决方案,它肯定会解决跨浏览器兼容性问题。
如果它对:)有帮助,请将其标记为答案