SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IEのコンテキストメニュー用インストーラーとソフトの作成

IEで選択した部分のソースコードを右クリックメニューで編集する(前編)

IEのコンテキストメニュー用インストーラーとソフトの作成


(解説)コンテキストメニューのレジストリについて

 ここで少し技術的な話を書くことにします。IEのコンテキストメニューの仕組みについて、この章では説明を行います。

 まず、レジストリという用語について解説しておきます。

レジストリとは
 レジストリ(registry)とは、記載や登録、登記という意味の英語です。「Windowsのレジストリ」には、Windowsや各種ソフトの設定が収められています。レジストリは、レジストリ エディタというソフトで直接編集することができます。また、プログラムを使って操作することもできます。
 レジストリ エディタを起動して、レジストリがどのような物かを見てみたい人は、以下の手順でレジストリ エディタを起動してください。
  1. Windowsの[スタート]ボタンをクリックする。
  2. [ファイル名を指定して実行]を選ぶ。
  3. 起動したダイアログのテキスト入力欄に「regedit」と入力して[OK]ボタンをクリックする。
  4. レジストリ エディタのウィンドウが表示される。
レジストリ エディタ
レジストリ エディタ

 IEのコンテキストメニューの「各メニュー項目」は、レジストリの「HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\」というパスに登録されている「各キー」に対応しています。そして、メニューが選択された場合は、そのキーの(標準)の値に登録されているパス(HTMLファイルのパス)が実行されます。

コンテキストメニューのレジストリの値1
データ
(標準) 実行されるHTMLファイルのパス

 メニューが選ばれたとき、選択したメニューに対応したHTMLファイルがIEで開かれます。その際、2つの点で、通常のHTMLファイルをIEで開くときとは違う振るまいをします。

 1つ目の違う点は、「コンテキストメニューを開いた元のWebページの情報」を、操作できる状態で起動することです。この操作は、開かれたHTMLファイルのプログラム内でexternal.menuArgumentsというオブジェクトを通して行うことができます。

 2つ目の違う点は、通常とは違うウィンドウの状態で起動することです。コンテキストメニューから起動させるHTMLファイルは、レジストリの設定によって、「ウィンドウを表示させない」か、「固定サイズのウィンドウとして表示させる」かの、いずれかの状態で起動します。通常のWebブラウザの見た目では起動しません。

 さて、このウィンドウ表示の設定は、レジストリ内ではflagsの値として登録することになります。このflagsのデータが0の場合はウィンドウを非表示、1の場合はウィンドウを表示となります。

コンテキストメニューのレジストリの値2
データ
flags ウィンドウの表示フラグ
flagsのデータ
データ 内容
0 ウィンドウを非表示
1 固定サイズウィンドウを表示

 レジストリの値にはflags以外にもう1つあるのですが、その説明の前に、コンテキストメニューのレジストリがどのようになっているかを示すことにします。

 今回作成する「コンテキストメニュー用ソフト」の、ソフト名は「選択範囲のソースを表示&削除&書き換え」です。このソフトをIEに登録する場合は、次のようなレジストリのパスになります。また、その下に、2つの値と、そのデータのサンプルを【 】でくくって書くことにします。

  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\選択範囲のソースを表示&削除&書き換え
    • (標準) 【C:\CodeZineSample\source_view.html】
    • contexts 【127】
    • flags 【1】

 この場合、コンテキストメニューには「選択範囲のソースを表示&削除&書き換え」と表示されるようになります。上記の(標準)flagsは既に説明しましたので、contextsについて、説明します。

 contextsは、コンテキストメニューに表示させる条件を指定するための値です。例えば、今回のサンプルのように、選択範囲に対して処理を行うソフトの場合を考えてみます。その際、選択範囲以外の場所でメニューに名前が表示されていても役に立ちません。また、役に立たないばかりか、邪魔になる可能性もあります。こういったことがあるために、どういった条件のときに、そのソフトをコンテキストメニューに表示させるかの条件が設定できるようになっています。

コンテキストメニューのレジストリの値3
データ
contexts メニューへの表示条件

 コンテキストメニューに表示させる条件には、以下の7種類があります。複数の条件で表示させたい場合は、それぞれの条件の数値を足していきます。すべての条件で表示させたい場合は、すべての数値の合計である127を指定します。

contextsのデータ
データ 内容
1(0x00000001) 通常の場所(CONTEXT_MENU_DEFAULT)
2(0x00000010) 画像の上(CONTEXT_MENU_IMAGE)
4(0x00000100) フォームのコントロール上(CONTEXT_MENU_CONTROL)
8(0x00001000) テーブルの上(CONTEXT_MENU_TABLE)
16(0x00010000) 選択されたテキストの上(CONTEXT_MENU_TEXTSELECT)
32(0x00100000) リンクの上(CONTEXT_MENU_ANCHOR)
64(0x01000000) その他(CONTEXT_MENU_UNKNOWN)

 「コンテキストメニュー・インストーラ」では、これらのキーや値のうち、「追加するHTMLファイルの名前(source_view.html)」「メニューへの表示名(選択範囲のソースを表示&削除&書き換え)」「flags(1)」「contexts(16)」を、ユーザー変数として指定し、レジストリへの登録を行うことにします。

次のページ
ユーザー変数の初期化

この記事は参考になりましたか?

IEのコンテキストメニュー用インストーラーとソフトの作成連載記事一覧
この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/874 2008/08/21 21:12

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー