2010-11-05 25 views
1

我已經徹底地遵循http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx以註冊自定義URL協議,我會爲了使用集成我寫的申請中描述的步驟在C#中使用Pocket Internet Explorer。這個想法是點擊類似於xpto://something/?with=1&parameters=2的鏈接,並立即打開應用程序。嘗試,在Windows Mobile註冊一個URL模式(自定義協議)6.1

這是一直髮生在我身上:

  1. 如果我只註冊協議,它不會在所有的工作。 IE抱怨Cannot open 'xpto://something/?with=1&parameters=2'. Either it is not signed with a trusted certificate or one of its components cannot be found.錯誤。

  2. 如果我也註冊一個.xpto文件類型,使用方法http://www.1-script.com/forums/IE-Windows-Mobile-MIME-Handler-What-s-the-solution-article7966--15.htm,我可以讓應用程序打開只有當URL與xpto://開始,以.xpto結束,像xpto://somehost/file?parameters=1.xpto。這是它實際工作的唯一時間。沒有任何錯誤。

  3. 如果我僅使用上述方法註冊文件類型,則使用類似http://somehost/test.xpto的URL可讓IE顯示其下載對話框,而無需直接打開文件。

我可以和2號一起去,但除了是地獄般的討厭之外,我真的很想知道這裏發生了什麼。這是我的第二天,我無法在互聯網上找到任何關於此的答案。我檢查了我的註冊表項數千次,發現沒有錯誤或拼寫錯誤。

下面是我的駕駛室安裝.inf,關於創建註冊表項。當使用註冊表編輯器探索移動設備時,我發現%InstallDir%設置得很好,引號也是如此。第一組註冊文件類型,第二組註冊URL協議。

[RegKeys] 
"HKCR",".xpto","","0x00000000","xptofile" 
"HKCR",".xpto","Content Type","0x00000000","application/x-xpto" 
"HKCR","xptofile","","0x00000000","xpto File" 
"HKCR","xptofile","EditKeys","0x00010001","65536" 
"HKCR","xptofile\Shell","","0x00000000","" 
"HKCR","xptofile\Shell\Open","","0x00000000","" 
"HKCR","xptofile\Shell\Open\Command","","0x00000000","""%InstallDir%\xpto.exe"" ""%%1""" 

"HKCR","xpto","","0x00000000","XPTO Protocol" 
"HKCR","xpto","URL Protocol","0x00000000","" 
"HKCR","xpto\DefaultIcon","","0x00000000","xpto.exe,0" 
"HKCR","xpto\Shell","","0x00000000","" 
"HKCR","xpto\Shell\Open","","0x00000000","" 
"HKCR","xpto\Shell\Open\Command","","0x00000000","""%InstallDir%\xpto.exe"" ""%%1""" 

我的應用程序在手機的內存中。我究竟做錯了什麼?

回答

3

得到它的工作之後在此博客的說明:

http://thegrayzone.co.uk/blog/2010/08/custom-url-protocol-in-windows-ce/

顯然,MSDN文檔省略了也應該HKEY_LOCAL_MACHINE下添加一個關鍵:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\URLProtocols\xpto 

哪裏xpto是您的URL協議架構,在這裏適用於這種情況。添加它,它現在看起來工作正常,只註冊了xpto協議(沒有.xpto文件類型關聯需要)。