ユーザー変数の初期化
以下、「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プロシージャ内で行われます。
InstallDialog、EditRegの2つのSubプロシージャは、次章以降で作成します。最後に、Wscript.Quitで、VBScriptの実行を終了しています。
「インストールダイアログ」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変数に代入されます。
