Windows, Windows Mobile でURLスキームに対応する方法

URLスキームといえば http:// や ftp:// とか、URLの先頭にあるものなんですが、これの定義する方法ずっと調べてたんだけど普通にMSDNにあった。

Registering an Application to a URI Scheme (Internet Explorer)

このドキュメントのミソは

  • HKEY_CLASSES_ROOT 直下にスキーム名のキーを作り、"URL Protocols" というキーを作る
  • あとは普通の関連づけと一緒

ただ、Windows Mobile 6.5のIEからこれで定義したURL開くと動かなかった。調べてみたら実際はもう一つキーが必要で、HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\URLProtocolsに定義したURLスキームのサブキーを作る必要があった。

Launch parametrized Windows Mobile CAB from browser

総合するとこんな感じ。このレジストリを入れて irc://irc.freenode.net とかをIEで踏むとEbIRCが起動してくる*1

REGEDIT4

[HKEY_CLASSES_ROOT\irc]
@="URL:Internet Relay Chat"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\irc\Shell]

[HKEY_CLASSES_ROOT\irc\Shell\Open]

[HKEY_CLASSES_ROOT\irc\Shell\Open\Command]
@=""\\Program Files\\EbIRC\\EbIRC.exe" %1"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\URLProtocols\irc]

*1:ただ、EbIRC側にそれを受け入れる仕組みがないので起動するだけw