前回に引き続き、WindowsのURLのプロトコル処理について解説していく。プロトコル起動では、UWPやストアアプリの起動が可能になる。以下、表記が面倒なのでUWPと略すが、スキーマ名などに違いがある場合を除き、多くがWindows 8やストアアプリにも対応できる。
UWPアプリでは、開発時に起動のためのスキーマを指定できる(指定しなければならないわけではない)。指定しておくと、該当のスキーマを使った起動が可能になる。ただし、スキーマは、レジストリにプロトコルとして登録されている必要があるが、通常は、アプリがインストール時に登録を行なう。
どのアプリがどのプロトコルを使うのかは、コントロールパネルの「既定のプログラム」から表示させることができる(前回を参照のこと)。また、レジストリに以下の形式で登録されているピリオドから始まらないキーは、プロトコルの登録である(以下プロトコルキーと呼ぶ)。
HKEY_CLASSES_ROOT直下のキー
キー名がピリオドから始まらない
キーに「URL Protocol」という名前の文字列値がある
(データが指定されている必要はない)
プロトコルキーは、キー名自体がスキーマとなる。また、コントロールパネルなどに表示される文字列は、キーの既定値が使われる。UWPアプリ側がプロトコルを指定しているため、ファイルの関連付けのようにProgIDなどでプロトコルとアプリの関連を定義する必要はない。
しかし、ファイルの関連付けと同様にShellサブキーなどを使ってデスクトップアプリと対応付けすることは可能だ。このやり方は、拡張子と既定のプログラムと同じやりかたで、前々回までの話の繰り返しになるのでここでは説明しない。
標準アプリを起動するプロトコル
Windowsストアなど標準搭載のUWPアプリの一部に関しては、プロトコル起動について詳細な情報が公開されている。具体的には「Windowsストア」「マップ」「設定」「People」などだ。
たとえば、設定アプリでは、カテゴリ項目や個々の設定ページなどを開く方法がドキュメントに記載されている。
単純に設定ページを開くなら
start ms-settings:
でできる。ロック画面(設定→パーソナル設定→ロック画面)ならば、
start ms-settings:lockscreen
を使うか、ロック画面設定を直接指定するプロトコル
start ms-settings-lock:
で起動できる。なお、Windows10のドキュメントでは、前者のほうのみ記載されているが、レジストリには、後者のプロトコルも定義されている。
Windowsストアの場合、検索なども可能だ。コマンドプロンプトからはstartコマンドのあとに以下のURIを置けば、ストアでの検索が可能だ。
ms-windows-store://search/?query=OneNote
このほか、拡張子やプロトコルなどで検索することも可能で、
ms-windows-store://assoc/?Protocol=mailto
とすると、mailtoプロトコルに対応したアプリを捜すことができる。こうしたURIをショートカットにいれておけば、特定の条件でアプリを検索するショートカットを作成可能だ。
すべての標準搭載アプリがプロトコル起動をサポートしているわけではない。プロトコル起動や関連付けによる起動をサポートしていない代わりに、汎用的な情報アクセスのためのAPIをWindowsが用意しているものもある。たとえば、カレンダーやアドレス帳に関しては、APIが用意されるためプロトコル起動はサポートされていない。
このほか、マイクロソフトは、オフィスアプリのプロトコル起動に関しての文書も公開している(https://msdn.microsoft.com/en-us/library/office/dn906146%28v=office.15%29.aspx?f=255&MSPPError=-2147217396)

この連載の記事
- 第258回 LinuxのGUIアプリケーションに対応するWSL2
- 第257回 Windows 10の最新ビルドを用い、WSL2で仮想マシン環境を使う
- 第256回 ARM版Windows 10のプレビュー版でx64プログラムの動作に対応したので試した
- 第255回 Windowsのディスプレイとモニター いまだ96DPIが基準
- 第254回 Preview版でv1.5まで進化したWindows Terminalの新機能を確認
- 第253回 Windows 10でJSONを扱う
- 第252回 ソフトウェア開発者以外にも便利なツールが含まれるWindows SDK/WDKをインストールする
- 第251回 WindowsサーチのIndexerで使われるIFilterを調べる
- 第250回 キーボードのキー入れ替えにおける、仮想キーコードとキーボードスキャンコード
- 第249回 Windows 10で秋の大型アップデートが始まったのに、春のアップデートも落ちてこないマシンがあるのはなぜ?
- 第248回 Windows 10にはコンテナーがいっぱい
- この連載の一覧へ