2013-10-07 55 views
2

我正在編寫一個協議處理程序來啓動java應用程序,調用類似於java -jar myApp'%1'的命令。目前我已經實施了Chrome瀏覽器,看起來工作正常。不幸的是,我對Firefox和IE沒有同樣的行爲(怪怪的?!X-D)在窗口上運行的Firefox,Chrome和IE上編寫可移植的自定義協議處理程序

在這裏我的實現。

協議名爲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\"" 

在Chrome這就夠了。 在Firefox,我不得不在約增加一些配置:配置。繼MDN在Firefox我設置以下

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> 

這裏提供一些參考: Installing and Registering Protocol Handlers http://msdn.microsoft.com/en-us/library/aa767916%28VS.85%29.aspx

我真誠地希望有人能幫助我

+0

我知道什麼,我會寫是不是專業的,絕對不會客氣,但是我必須做的: 沒有人,即使是想象如何解決那??! sob:'(:'(:'( –

回答

1

您遇到的問題是你直接在協議處理程序中調用jar。您需要調用的java.exe與-jar參數

你的註冊表項應該是這樣的

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\"" 
0

我明白,你已經採取了在系統註冊表中註冊的方法,但是,如果你願意採取不同的方法,然後在Generic-Protocol-Handler有一個通用解決方案,它肯定會解決跨瀏覽器兼容性問題。

請註明此爲答案,如果它可以幫助:)

相關問題