目的別に3つのウェブブラウザを使い分け
でも、今見ているページを他のブラウザで開きたいときがある
筆者は、普段から3つのウェブブラウザを使い分けている。常用しているのはChromeで、これは普通に仕事などに使っている。もう1つはEdge。拡張機能などをほとんど入れずにプレーンな状態にしてあり、主に画面キャプチャーに使う。もう1つはFireFoxだ。
Chromeを仕事で使う関係で、SNSやなにか引っかかりそうなサイトを拡張機能を使ってブロックし、たとえば、Twitterなどは表示できないようにしている。しかし、最近では情報源のリンク先がツイートになっていることもあり、そういうときには、FireFoxを起動して見るようにしている。また、HTML関係のアプリケーションやサイトのCSS確認などに複数のブラウザで試す、あるいは異様に表示が遅いなどのページがあったときに、他のブラウザでも検証するといった場合がある。
そう言えば、Microsoftのウェブブラウザが大きく更新されると、必ずといっていいほど、Microsoftサイトを他のブラウザで開くと異様に時間がかかるページが出てくる(そして、いつの間にか消える)。そんなときに困るのは、FireFoxやEdgeで開いたページをChromeでも開きたいといった場合だ。ページ翻訳や拡張機能などでもChromeで開きたくなる。通常こういうときは、URLをコピー&ペーストするのが一般的だろう。しかし、今ブラウザで開いているページを直接、他のブラウザで開くことができると楽なはず。今回はその方法を解説する。
Windows 11ではEdgeが強く推奨されている!?
今回の方法を見つけたのは、ほかでもないWindows 11でMicrosoftがEdgeの利用を“強く”推奨しているという話が元になっている。筆者は、UTF-8にBOMを付けていないのでタスクバーの検索機能は使わないし(「BOMなしUTF-8によってWindowsでもたらされる困惑」)、インターネット検索するなら、ブラウザ(いまのところ標準ブラウザはChromeである)を開いてキーワードを入れる。Edgeから特段迷惑を被っているわけではない。
とはいえ、いろいろと騒がれているので少し状況を調べた。なにかにつけてEdgeが起動するのは、内部的に「microsoft-edge:」というURI起動でURLを開いているからだと思われる。
たとえば、Chromeを開いて、URL欄に
microsoft-edge:https//ascii.jp
と入れてEnterキーを押すと、確認が出たあと、EdgeでASCII.jpのトップページが開く。
URLの先頭部分は「スキーマ」と呼ばれる。スキーマは、後続部分をアクセスするためのプロトコルなどを示す部分だ。Windowsでは、このスキーマに対して「プロトコルハンドラー」を定義すると、URLを「開く」処理をするときにプロトコルハンドラーを起動できる。
前回解説した(「Windows 11の右クリックメニューが変わった問題など、細かなWin11対策を紹介」)URI起動にもちょっと似ている。というか見かけはほとんど区別がつかない。しかし、URI起動は起動のメカニズムが違う。URI起動が対象にしているのは、UWPなどの実行ファイルから直接起動できないプログラムだ。このため、プロトコルハンドラーとは、起動のメカニズムが違い、同じ方法では定義できない。「microsoft-edge:」は、URI起動である。
ここから考えたのは「google-chrome:」や「mozilla-firefox:」といったプロトコルハンドラーを定義して、ブラウザのアドレス欄の先頭にこれを追加してやれば、他のブラウザを開けるということだ。
ChromeやFirefox用のプロトコルハンドラーを定義する
プロトコルハンドラーは、レジストリにキーワードを登録して、拡張子と起動プログラムを対応させるように、起動プログラムを指定してやることで、定義できる。その方法を「google-chrome:」を例に解説する。
レジストリエディタを開き、先頭の「HKEY_CLASSES_ROOT」を選択したら、右クリックで「新規」→「キー」を選ぶと、レジストリツリーに新規キーが追加され、名前の設定状態になるので、ここに「google-chrome」と入れる(最後にコロンがない点に注意)。ここに入れる名前は、小文字のアルファベットとする。
次にこのキーを右クリックして「新規」→「文字列値」として項目を作り、名前を「URL Protocol」とする。データは設定する必要がない。これで、キーの名前がプロトコルハンドラとして認識される。
作成したキーの下に「shell」「open」「command」とキーの階層構造を作る。そして、最後のcommandでレジストリエディタ右側の領域にある「(既定)」をダブルクリックして以下のコマンドをデータとして登録する。
powershell.exe -noprofile -command "&{$x=('%1' -replace 'google-chrome:','') ; start-process -FilePath 'C:\Program Files\Google\Chrome\Application\chrome.exe' -argumentList $x }"
ちょっと複雑なのにはワケがある。プロトコルハンドラーを使う場合、プログラムに渡すURLには、当然プロトコルハンドラー名が含まれる。たとえば上記の設定をした場合は、プロトコルハンドラーに登録したプログラムには、「google-chrome:https//ascii.jp」というURLが渡る。上記のコマンドは、PowerShellを使って、先頭のプロトコルハンドラー名を落として、chrome.exeの引数として渡している。
なお、引数はブラウザがチェックするため、実行ファイル名を入れたような場合、「google-chrome:calc.exe」のようなものはchrome.exeが受け付けない。また、32bit版のChromeや32bit版からアップグレードするなどした場合はパスが異なるケースも考えられる。その場合には「-FilePath」以下のchrome.exeのパスを書き換える。
プロトコルハンドラーを登録したら、EdgeやFireFoxなどでウェブページを表示させ、そのURL欄を選択して、先頭にカーソルを移動させる(この手順は「Ctrl+L」または「Home」でできる)。そこに「google-chrome:」(最後にコロンが必要)を入力してEnterキーを押すと、「Windows PowerShell」を開くかという確認が出る(ブラウザにより表現が違う)。
許諾する旨のボタンを押せばChromeが表示中のページを開く。一瞬、PowerShellのウィンドウが表示されてしまうのが難点だが、プログラムを作るよりは簡単なので、簡易な方法と思って諦めていただきたい。
FireFoxではプロトコルハンドラーを処理するときに、チェックボックスをオンにすると次回から確認しないで起動が可能になる。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ