まとめ(完成プログラム)
「コンテキストメニュー・インストーラ」のコーディングがすべて終わりましたので、以下にまとめておきます。
'//========================================
'//
'// IEの右クリックにメニューを追加
'//
'//========================================
'// 仕様 :レジストリを操作して、IEの右クリックにメニューを追加する。
'//==== ユーザー変数の初期化 ====================================
'//
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
'//==================================================================
'//==== 変数の初期化 ============================================
'//
Dim baseReg, strInstallMode
' レジストリの基準パス
baseReg = _
"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\"
' 実行モード
strInstallMode = "インストール"
'//==== インストールの実行 ======================================
'//
Call InstallDialog ' インストールダイアログ
If strInstallMode <> "キャンセル" Then
Call EditReg ' レジストリの編集
End If
'//==== 終了 ====================================================
'//
Wscript.Quit ' 終了
'//==================================================================
'//========================================
'//
'// インストールダイアログ
'//
'//========================================
'// 引数 :なし
'// 返り値:なし
'// 仕様 :インストールダイアログの表示
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
'//==================================================================
'//========================================
'//
'// レジストリの編集
'//
'//========================================
'// 引数 :なし
'// 返り値:なし
'// 仕様 :レジストリを変更する。
Sub EditReg
'//==== 変数の初期化 ============================================
'//
Dim WSHShell, fSys, addReg, myPath, myFolder, addPath, strMsg
' WScript.Shellの初期化
Set WSHShell = CreateObject( "WScript.Shell" )
' FileSystemObjectの初期化
Set fSys = WScript.CreateObject( "Scripting.FileSystemObject" )
' レジストリのパスを設定
addReg = baseReg & strTitle & "\"
'//==== HTMLファイルのパスを作成 ================================
'//
myPath = WScript.ScriptFullName
myFolder = fSys.GetParentFolderName( myPath ) & "\"
addPath = myFolder & addFile
'//==== 表示メッセージを作成 ====================================
'//
strMsg = vbCrLf & "「" & strTitle & "」を「レジストリ」"
If strInstallMode = "インストール" Then
strMsg = strMsg & "に「インストール」"
Else
strMsg = strMsg & "から「アンインストール」"
End If
strMsg = strMsg & "してよろしいですか?" & vbCrLf
'//==== 確認メッセージボックス ==================================
'//
If MsgBox( strMsg, 1 ) = 1 Then
'//==== [OK]の場合([キャンセル]の場合は何もしない) ====
'//
If strInstallMode = "インストール" Then
'//==== インストールの場合(各項目をレジストリに追加) ==
'//
WSHShell.RegWrite addReg, addPath
WSHShell.RegWrite addReg & _
"contexts", intContexts, "REG_DWORD"
WSHShell.RegWrite addReg & "flags", intFlags, "REG_DWORD"
Else
'//==== アンインストールの場合 ==========================
'//
On Error Resume Next ' 未インストール時のエラー回避
WSHShell.RegDelete addReg
End If
'//==== 終了メッセージ ======================================
'//
strMsg = strInstallMode & "しました" & vbCrLf & vbCrLf
strMsg = strMsg & _
"IEを起動している際は、IEを起動しなおしてください"
MsgBox strMsg
End If
End Sub
次回は
後編では、このインストーラでIEのコンテキストメニューに追加される「コンテキストメニュー用ソフト」を作成していきます。
