schedule2021-08-18

URIスキームで規定のブラウザではないIEとEdgeを開いてページを表示する方法【Windows10】

規定のブラウザ以外のブラウザでページを表示する方法を調べています。 その中でIEとEdgeを開く方法が分かったのでまとめます。

やりたいこと

Electronで作ったWindowsアプリから、とあるページをブラウザで開きたい。 ElectronはJavaScriptでデスクトップアプリが開発できるOSSです。そのため、JavaScriptで実行できると良い。

URIスキームでブラウザを指定して開く

Windowsのレジストリに登録されているURIスキームによって、EdgeとIEを開く方法がわかりました。

EdgeはもとからWindowsレジストリに登録されているためURIスキームがすぐに利用できます。 IEはWindowsレジストリの設定が必要なため後述します。

Edgeを開く

microsoft-edge:というURIスキームでEdgeを開きつつそれ以降のURLのページを開くことができます。

microsoft-edge:https://www.suzu6.net

上述をChromeの検索バーに入力するとEdgeを開く旨のメッセージが出てからEdgeを開きます。

picture 3

JavaScriptでブラウザを指定して開く

JavaScriptからも開くことができます。

let url = "microsoft-edge:https://www.suzu6.net";
window.open(url);

これをデバックコンソールなどで実行してみるとEdgeを開くことができます。 picture 4

Windowsレジストリについて

Windowsユーザーのレジストリ情報を確認する - docs.microsoft.com

レジストリにはサービスやアプリケーションなど、Window に使われている全ての設定がこのデータベースに格納されています。 ここでは、この中の機能の一部を使ってURIスキームを実現しています。

ただ、正直どうやって編集したらよいのかまだわかっていない。

URI に応じた既定のアプリの起動 - docs.microsoft.com

公式のドキュメントにURIに応じてアプリを起動する方法について説明があります。 Edgeの他、メールやマップアプリも開けるようです。

レジストリを管理する「レジストリエディタ」はWin+Rregeditを入力して実行すると開くことができます。

picture 5

IEのレジストリを登録する

Windows10の初期状態ではmk:res:でIEを開くことができる。

mk:https://wwww.google.com

res:https://wwww.google.com

ひらくことはできるが、URIスキームも一緒に入力されてしまうためこのように有効なURLとしてみなされない。

picture 6

そのため、IEを開くレジストリを自作した。

レジストリを登録する

myie.reg ファイルを作成して以下の内容を記入する。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"=""
@="URL:IE Protocol"

[HKEY_CURRENT_USER\Software\Classes\ie\shell]

[HKEY_CURRENT_USER\Software\Classes\ie\shell\open]

[HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
@="cmd /c set url=\"%1\" & call set url=%%url:ie:=%% & call start iexplore -nosessionmerging -noframemerging %%url%%"

作成したファイルをダブルクリックするとレジストリに登録できる。

以後は次のURIスキームを使ってIEを開くことができる。

ie:https://wwww.google.com

レジストリではコマンドプロンプトを介してIEを開いている。 そのため、一瞬コマンドプロンプトが立ち上がりちらついてしまう。

おわり

URIスキームが手軽でEdgeはうまくいった。 IEはコマンドプロンプトがちらついてしまうのと、ChromeとFireFoxはまだやり方は分からない。 レジストリにexeのパスを書いてアプリを開くだけならできるが、URLを渡してそのページを開く方法がまだわからない。

レジストリの利用の有無は別としてローカルのChromeやFireFoxを開く方法がわかる方は連絡ください。

参考