このページの本文へ

前へ 1 2 次へ

Windows Info 第306回

現在表示中のウェブページを他のブラウザで開くのをコピペより簡単にする方法

2021年12月19日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

目的別に3つのウェブブラウザを使い分け
でも、今見ているページを他のブラウザで開きたいときがある

 筆者は、普段から3つのウェブブラウザを使い分けている。常用しているのはChromeで、これは普通に仕事などに使っている。もう1つはEdge。拡張機能などをほとんど入れずにプレーンな状態にしてあり、主に画面キャプチャーに使う。もう1つはFireFoxだ。

 Chromeを仕事で使う関係で、SNSやなにか引っかかりそうなサイトを拡張機能を使ってブロックし、たとえば、Twitterなどは表示できないようにしている。しかし、最近では情報源のリンク先がツイートになっていることもあり、そういうときには、FireFoxを起動して見るようにしている。また、HTML関係のアプリケーションやサイトのCSS確認などに複数のブラウザで試す、あるいは異様に表示が遅いなどのページがあったときに、他のブラウザでも検証するといった場合がある。

 そう言えば、Microsoftのウェブブラウザが大きく更新されると、必ずといっていいほど、Microsoftサイトを他のブラウザで開くと異様に時間がかかるページが出てくる(そして、いつの間にか消える)。そんなときに困るのは、FireFoxやEdgeで開いたページをChromeでも開きたいといった場合だ。ページ翻訳や拡張機能などでもChromeで開きたくなる。通常こういうときは、URLをコピー&ペーストするのが一般的だろう。しかし、今ブラウザで開いているページを直接、他のブラウザで開くことができると楽なはず。今回はその方法を解説する。

ウェブブラウザのURL欄の先頭に「microsoft-edge:」をつけると、確認のあとURLがEdgeで開く。どんなブラウザもURL欄では、プロトコルハンドラーやURI起動には対応しているようだ

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でレジストリエディタ右側の領域にある「(既定)」をダブルクリックして以下のコマンドをデータとして登録する。

レジストリエディタで、HKEY_CLASSES_ROOTに「google-chrome」というキーを作ったら、そのあと「shell」「open」「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」を開くかという確認が出る(ブラウザにより表現が違う)。

「google-chrome」でプロトコルハンドラーを定義して、EdgeのURL欄に入れると、最初に確認としてプロトコルハンドラーとして登録したWindows PowerShellを実行するかどうかを尋ねてくる。他のブラウザも同様で、許可するボタンを押せば、プロトコルハンドラーが実行されてChromeで表示中のページが開く

 許諾する旨のボタンを押せばChromeが表示中のページを開く。一瞬、PowerShellのウィンドウが表示されてしまうのが難点だが、プログラムを作るよりは簡単なので、簡易な方法と思って諦めていただきたい。

 FireFoxではプロトコルハンドラーを処理するときに、チェックボックスをオンにすると次回から確認しないで起動が可能になる。

FireFoxでは、確認画面にある「常にこのプログラムでgoogle-chromeリンクを開く」のチェックボックスをオンにして、「リンクを開く」ボタンを押せば、次回からは確認なしに開けるようになる

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン