IEの右クリックメニューをスクリプトで拡張する方法

仕事柄いやでもIEを使わなければいけない場面が多々ある。
FirefoxのようにIEも手軽にカスタマイズする方法が無いか探していたところ、Firefoxほどじゃないけど右クリックメニューから独自のスクリプトを呼び出す方法が紹介されていたのでやってみた。

元ネタは以下から

The Old New Thing : Extending the Internet Explorer context menu

ただし、この方法ではローカルに保存したスクリプトを実行する際、セキュリティの設定によると思うが、毎回IEの警告が表示されてかなりウザイ。
それを避けるには、スクリプトの警告を出さないようにするか、どこかのサーバにスクリプトをホストしてもらって、そのサーバを信頼済みサイトに登録するという方法を取ることになる。
自分の場合は、イントラネット内に自分の自由になるWebサーバがあったのでそこに置くようにした。

手順

おきまりの"Hello, world." をやってみる。
保存先は、Webサーバとか、一応ローカルでもいい(前述の問題があるが)

スクリプトの用意

以下のコードを hello.html という名前で保存する。

<script>
var win = external.menuArguments;
var selected = win.document.selection.createRange().text;
alert("Hello," + selected + " world. ");
</script>

レジストリへの登録

regeditなどでレジストリを開き、以下のようにキーを追加する。
追加したキーの名前が、右クリックメニューに表示されるので適当な名前をつける(日本語でもいい)。

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\(追加するメニュー項目)

このキーの(規定)の値として、スクリプト(を保存したページ)へのURLを登録する。
自分の場合は、http://server/path/to/script/ 配下に保存したので以下のような感じになる。

http://server/path/to/script/hello.html

実際に登録した感じは以下
http://gyazo.com/59de02f52cee345cc1ad432e63b77bb1.png


これが、ローカルの場合は、

C:\hoge\fuga\hello.html

という感じになる。

できあがり

できあがりはこんな感じ。

http://gyazo.com/cb1ba673b363e84c3d9bfac5da55143b.png

右クリックメニューの中に"ハロー世界"が追加されているのがわかるはず。

実行すると

http://gyazo.com/a31983974681ff679d955b73eed3f5c2.png

選択範囲のコンテンツを取得することもできる。

http://gyazo.com/386853382f9513cbc93c3aff871c304b.png

http://gyazo.com/6ba886d37ee5cfb2b68dcbbdce4c1073.png