コンテキストメニューとは
コンテキストメニューとは、IEの画面上で右クリックした場合に表示されるメニューの事です。


通常、コンテキストメニューへの追加はレジストリを編集して行いますが (参考)、
SpicIEではレジストリの設定は自動で行ってくれます。

追加したコンテキストメニューの選択により実行されるのは、スクリプトの書かれたHTMLファイルです。
スクリプトファイルに記述をすることで、外部アプリケーション実行などの様々な操作が行えます。
クラス作成
プロジェクトにコンテキストメニュー用のクラスを新規作成し、 以下のように入力してください。


Public Class ContextMenu : Inherits SpicIE.Controls.ContextMenu

    Public Overrides ReadOnly Property PluginGuid() As String
        Get
            Return "7EF33741-D228-4391-9EFE-48F32FD0B3B7"
        End Get
    End Property

    Public Overrides ReadOnly Property PluginProgID() As String
        Get
            Return "ContextMenu"
        End Get
    End Property

    Public Sub New()

        MenuText = "ContextMenu"
        MenuCommand = System.IO.Path.Combine(SpicIE.Host.GetActivePath(), "Resources\script.html")
        MenuContext = ContextEnum.Default

    End Sub

End Class

  • クラス定義はSpicIE.Controls.ContextMenuクラスを継承します。
  • PluginGuidは適当にGUIDを作成して記入してください。(GUIDの取得方法はコチラを参考)
  • PlogIDは分かりやすい任意の文字にしてください。
  • コンストラクタでは、基本クラスの変数に対して設定を行います。
    ここで設定した内容でコンテキストメニュー設定が行われます。
    • MenuTextへの設定値は、コンテキストメニューに表示される文字になります。
    • MenuCommandは、コンテキストメニューから選択時に実行するスクリプトです。
    • MenuContextは、アイテムの表示方法の設定です。 ビットの論理ORで複数定義可能です。
    • Default0x1常に表示される
      Images0x2画像上でメニューが表示された時
      Controls0x4フォームのコントロール上でメニューが表示された時
      Tables0x8テーブル上でメニューが表示された時
      Text selection0x10テキストが選択されてメニューが表示された時
      Anchor0x20リンク上でメニューが表示された時

※注意
MenuContextに上記の表示方法の設定を行っても、Defaultとして常に表示されてしまいます。 コンテキストメニューの表示方法は、実際にはレジストリに設定された内容で動作するので、確認したところ、
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\コンテキストメニュー名\Contexts\
    (既定)=REG_DWORD:0x10
となっていました。
レジストリに保存する場所が微妙に違っているので、以下のように変更しました。
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\コンテキストメニュー名
    contexts=REG_DWORD:0x10
すると上手く行きました。SpicIEのバグ?