規定のブラウザ以外のブラウザでページを表示する方法を調べています。 その中で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を開きます。
JavaScriptでブラウザを指定して開く
JavaScriptからも開くことができます。
let url = "microsoft-edge:https://www.suzu6.net";
window.open(url);
これをデバックコンソールなどで実行してみるとEdgeを開くことができます。
Windowsレジストリについて
Windowsユーザーのレジストリ情報を確認する - docs.microsoft.com
レジストリにはサービスやアプリケーションなど、Window に使われている全ての設定がこのデータベースに格納されています。 ここでは、この中の機能の一部を使ってURIスキームを実現しています。
ただ、正直どうやって編集したらよいのかまだわかっていない。
URI に応じた既定のアプリの起動 - docs.microsoft.com
公式のドキュメントにURIに応じてアプリを起動する方法について説明があります。 Edgeの他、メールやマップアプリも開けるようです。
レジストリを管理する「レジストリエディタ」はWin+R
でregedit
を入力して実行すると開くことができます。
IEのレジストリを登録する
Windows10の初期状態ではmk:
とres:
でIEを開くことができる。
mk:https://wwww.google.com
res:https://wwww.google.com
ひらくことはできるが、URIスキームも一緒に入力されてしまうためこのように有効なURLとしてみなされない。
そのため、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を開く方法がわかる方は連絡ください。