SHOEISHA iD

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

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

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

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

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

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


ユーザー変数の初期化

 以下、「installer.vbs」に記述するプログラムを紹介し、解説を行っていきます。まずは、「installer.vbs」をテキストエディタで開き、以下のソースコードを記述します。

ユーザー変数の初期化
'//==== ユーザー変数の初期化 =========================================
'//
Dim addFile, strTitle, intContexts, intFlags

' 追加するHTMLファイルの名前
addFile = "source_view.html"

' メニューへの表示名
strTitle = "選択範囲のソースを表示&削除&書き換え"

' メニューへの表示条件
'  以下、メニューが呼び出された場所の条件を加算していきます。
'    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)
'    全部合計すると127(0x01111111)になります。
intContexts = 16

' ウィンドウの表示フラグ
'    0 - 非表示
'    1 - 表示
intFlags = 1

 「追加するHTMLファイルの名前 addFile」は、今回作成する「コンテキストメニュー用ソフト」のファイル名である「source_view.html」になります。フォルダのパスは、後のプログラム部分で自動的に取得するようにするので、特に記述する必要はありません。

 「メニューへの表示名 strTitle」は、コンテキストメニューに表示する名前です。今回は、「選択範囲のソースを表示&削除&書き換え」という、機能をそのまま表わした名前にします。

 「メニューへの表示条件 intContexts」は、レジストリの値contextsに書き込むデータです。今回作成するソフトは、選択範囲に関しての操作を行うソフトですので、選択されたテキストの上でコンテキストメニューを開いたときに表示される16を指定します。

 「ウィンドウの表示フラグ intFlags」は、レジストリの値flagsに書き込むデータです。今回作成するソフトは、メニューを選択したあとに、いくつかの操作を選択できるようにしてあります。そのため、そのインターフェイスを用意しなければなりません。そこで、ウィンドウにフォームのボタンを利用してインターフェイスを作成するために、ウィンドウを表示する1を選びます。

変数の初期化とメインフロー

 ここでは、「コンテキストメニュー・インストーラ」の変数の初期化と、大まかな流れを作ります。

 簡便なインストーラを作るために、複雑なインターフェイスは使いません。メッセージボックスの操作だけで、インストールおよび、アンインストールを行えるようにします。

 以下、使用イメージです。

起動時
起動時
「インストール」選択時
「インストール」選択時
インストール完了時
インストール完了時

 以下、ソースコードになります。前の章のソースコードの続きになります。

変数の初期化とメインフロー
'//==== 変数の初期化 ================================================
'//
Dim baseReg, strInstallMode

' レジストリの基準パス
baseReg = _
    "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\"

' 実行モード
strInstallMode = "インストール"

'//==== インストールの実行 ==========================================
'//
Call InstallDialog  ' インストールダイアログ
If strInstallMode <> "キャンセル" Then
    Call EditReg    ' レジストリの編集
End If

'//==== 終了 ========================================================
'//
Wscript.Quit    ' 終了

 各変数について説明します。

 「レジストリの基準パス baseReg」には、コンテキストメニューのレジストリのパスが指定されています。この変数は、パスを示す「HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\」という文字列で初期化されます。この変数は、「レジストリの編集」を行うEditRegというSubプロシージャ内で利用されます。

 「実行モード strInstallMode」には、デフォルトではインストールという値が入っています。この値が、Call InstallDialogという行の「インストールダイアログ InstallDialog」Subプロシージャ内で、キャンセルという値にならなければ、レジストリの編集が行われます(キャンセルになっている場合は、レジストリの編集は行われません)。レジストリの編集は、Call EditRegという行の、「レジストリの編集 EditReg」Subプロシージャ内で行われます。

 InstallDialogEditRegの2つのSubプロシージャは、次章以降で作成します。最後に、Wscript.Quitで、VBScriptの実行を終了しています。

「インストールダイアログ」Subプロシージャ

 ここでは、インストールダイアログの表示と、ユーザーの選択結果による「実行モード」の切り換えを行います。

 ここでは、以下のウィンドウを出して、どのボタンを選択するかを選ばせています。[はい]を押した場合はソフトのインストールを、[いいえ]を選んだ場合はソフトのアンインストールを、[キャンセル]もしくはウィンドウ右上の終了ボタンを押した場合は、何もせずに終了することにします。

インストールダイアログ
インストールダイアログ
「インストールダイアログ」Subプロシージャ
'//==================================================================
    '//========================================
    '//
    '//    インストールダイアログ
    '//
    '//========================================
    '//    引数 :なし
    '//    返り値:なし
    '//    仕様 :インストールダイアログの表示

Sub InstallDialog
    '//==== インストール・モード・ダイアログの文字列 ================
    '//
    Dim strModeDialog
    strModeDialog = vbCrLf & _
       "・ 「インストール」の場合は、「はい」を、" & vbCrLf & vbCrLf
    strModeDialog = strModeDialog & _
       "・ 「アンインストール」の場合は、「いいえ」を、" _
       & vbCrLf & vbCrLf
    strModeDialog = strModeDialog & _
       "・ 「終了」の場合は、「キャンセル」を、" & vbCrLf & vbCrLf
    strModeDialog = strModeDialog & _
       "    選択してください。" & vbCrLf

    '//==== インストール・モード・ダイアログの表示 ==================
    '//
    Select Case MsgBox( strModeDialog , 3 )
        Case 6
            strInstallMode = "インストール"
        Case 7
            strInstallMode = "アンインストール"
        Case Else
            strInstallMode = "キャンセル"
    End Select
End Sub

 strModeDialogに、ダイアログに表示する文字列を格納し、MsgBoxメソッドで、[はい][いいえ][キャンセル]のボタンが表示されるダイアログを表示します。

 そして、[はい]を選んだ場合はインストール、[いいえ]を選んだ場合はアンインストール、[キャンセル]もしくはウィンドウ右上の終了ボタンを押した場合はキャンセルの値が、「実行モード」を示すstrInstallMode変数に代入されます。

次のページ
「レジストリの編集」Subプロシージャ

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

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

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー