文書番号: 177241 - 最終更新日: 2003年1月22日 - リビジョン: 1.0

[InetSDK] ブラウザの標準コンテキスト メニューに項目を追加する

お知らせお使いのオペレーティング システムには適用しない情報が含まれている場合があります。
この記事は、以前は次の ID で公開されていました: JP177241

目次

すべて展開する | すべて折りたたむ

概要

この資料は Internet Client SDK の"Internet Tools&Technologies" "Reusing the Web Browser Control & MSHTML " "Overview"の"Controlling the Context Menus"セクションを説明します。特にこの資料では、コンテキスト メニューに項目を追加したり、イベントとの関係を制御するためのオプションのレジストリ キーについて説明します。

詳細

注意:レジストリは Windows 95 または Windows NT システムの非常に重要なファイルです。レジストリの編集を誤ると、Windows が起動しなくなる等、再セットアップを余儀なくされるような事態が発生する恐れがあります。弊社ではレジストリ エディタの編集の結果による如何なる問題に対しても保証はい確かねます。レジストリはお客様の責任範囲でお使いください。

標準コンテキスト メニューに項目を追加する

Web ページの表示部分を右ボタンでクリックすることで、コンテキスト メニューが表示されます。レジストリの設定によって、このメニューに新しい項目を追加しスクリプトを実行することが可能です。新しい項目を追加するには、以下のレジストリ キーを作成(または開く)します。
   HKEY_CURRENT_USER
       Software
           Microsoft
               Internet Explorer
                   MenuExt
このキーの下に、メニューに表示させる項目名をキー名としてキーを作成します(値ではありません)。このキーの(標準)の値に、ロードさせたい URL を入力します。キー名は "&" を含むことが可能で、"&" の直後の文字にはアンダーラインがつきます。URL は隠し HTML ダイアログ ボックスにロードされ、すべてのインラインスクリプトが実行され、ダイアログ ボックスは自動的に閉じられます。隠し HTML ダイアログ ボックスの external.menuArguments プロパティにはメニューを開いた元のウィンドウの window オブジェクトが入っています。

以下のレジストリ エントリーは、"文字列の操作"と言う項目をメニューに追加し、メニューが選択されると"c:\myscript.htm" ファイルを実行します。
   HKEY_CURRENT_USER
       Software
           Microsoft
               Internet Explorer
                   MenuExt
                       文字列の操作 = "file://c:\myscript.htm"
"c:\myscript.htm" ファイルを作成し、以下のスクリプトを記述します。
   <SCRIPT LANGUAGE="JavaScript" defer>
   var parentwin = external.menuArguments;
   var doc = parentwin.document;
   var sel = doc.selection;
   var rng = sel.createRange();
   var str = new String(rng.text);
   if(str.length == 0)
      rng.text = "my inserted text";
   else
      rng.text =  str.toUpperCase();
   </SCRIPT>
このスクリプトは external.menuArguments によってメニューを呼び出した親ウィンドウを取得します。スクリプトは現在選択されている文字列を取得し、文字列が選択されていれば大文字に変換し、選択されていなければ "my inserted text" を親ウィンドウの右ボタンのクリックを行った位置に挿入します。

オプションのキー

上記のレジストリ キーにはオプションの値が指定できます。

DWORD 値 "Contexts" はアイテムの表示方法を指定します。これは以下のビットの論理 OR です。値は mshtmhst.h に定義されています。これらの値は IDocHostUIHandler::ShowContextMenu 呼び出しで使用できます。
   (0x1 << CONTEXT_MENU_DEFAULT) (evaluates to 0x1)
   (0x1 << CONTEXT_MENU_IMAGE) (evaluates to 0x2)
   (0x1 << CONTEXT_MENU_CONTROL) (evaluates to 0x4)
   (0x1 << CONTEXT_MENU_TABLE) (evaluates to 0x8)
   (0x1 << CONTEXT_MENU_TEXTSELECT) (evaluates to 0x10)
   (0x1 << CONTEXT_MENU_ANCHOR) (evaluates to 0x20)
   (0x1 << CONTEXT_MENU_UNKNOWN) (evaluates to 0x40)
たとえば、デフォルト動作とテキスト選択の時にメニュー項目を表示したければ 0x11 を設定します。この値は、C 言語の表記で書くと以下の通りです。
   (0x1 << CONTEXT_MENU_DEFAULT) | (0x1 << CONTEXT_MENU_TEXTSELECT)
もう 1 つのオプションは DWORD 値の "Flags" です。これは 1 ビットの値 (0x1) です。MENUEXT_SHOWDIALOG として mshtmhst.h に定義されています。このビットを設定すると、スクリプトは ShowModalDialog を使って呼び出されます。これにより、スクリプトをロードしたウィンドウは隠されず、自動的に閉じることもありません。external.menuArugments の値もメニューを選択した Window オブジェクトを保持したままとなります。

メニュー イベント

メニューが追加した項目が選択されると、event オブジェクト (external.menuArguments.event) には、どこでクリックされたか、どのような状態でメニューが表示されたかが保持されます。マウスの状態は event.srcElement に、メニューの表示状態は以下の文字列の 1 つが event.type に保持されます。
  • MenuExtDefault
  • MenuExtImage
  • MenuExtControl
  • MenuExtTable
  • MenuExtTextSelect
  • MenuExtAnchor
  • MenuExtUnknown

その他の例

このサンプルは新しい項目をメニューに追加します。追加された項目 "新規に開く (&N)"は、現在の URL を新しいウィンドウを作成して表示します。フレーム機能によって複雑に作られたページでも、新しいウィンドウに表示させることができます。以下のようにファイルを作成し、Example2.reg ファイルをダブルクリックすることで、正しいレジストリを設定することができます。

Example2.reg

REGEDIT4

   [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\新規に開く (&
N)]
   @="file://c:\\example2.htm"
   "Contexts"=dword:00000001

C:\Example2.htm
~~~~~~~~~~~~~~~~
   <SCRIPT LANGUAGE="JavaScript" defer>
      open(external.menuArguments.location.href);
   </script>

関連情報

Internet Client SDK: Internet Tools & Technologies; Reusing the Web BrowserControl and MSHTML; Overview

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 177241? (http://support.microsoft.com/kb/177241/EN-US/ ) (最終更新日 1998-01-29) をもとに作成したものです。


この資料は以下の製品について記述したものです。
  • Microsoft Internet Explorer 4.0 128 ビット版
  • Microsoft Internet Explorer 4.01 Service Pack 2
キーワード:?
kbhowto KB177241
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"