Попытка зарегистрировать схему URL (пользовательский протокол) в Windows Mobile 6.1 - PullRequest
1 голос
/ 05 ноября 2010

Я тщательно выполнил шаги, описанные в http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx, чтобы зарегистрировать пользовательский протокол URL, который я буду использовать для интеграции приложения, которое я пишу на C #, с Pocket Internet Explorer. Идея состоит в том, чтобы нажать на ссылку, похожую на xpto://something/?with=1&parameters=2, и сразу же открыть приложение.

Вот что со мной происходит:

  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-Обработчик-Что-s-решение? -article7966--15.htm , я могу заставить приложение открываться только тогда, когда URL начинается с xpto:// и заканчивается .xpto, например xpto://somehost/file?parameters=1.xpto. Это единственный раз, когда это действительно работает. Никаких ошибок.

  3. Если я регистрирую тип файла только описанным выше способом, использование URL-адреса, например http://somehost/test.xpto, приводит к тому, что 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"""

Мое приложение находится во внутренней памяти телефона. Что я делаю не так?

1 Ответ

3 голосов
/ 05 ноября 2010

Получил работу, следуя инструкциям на этом блоге:

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 сопоставление типов файлов).

...