SHOEISHA iD

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

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

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

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

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

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


まとめ(完成プログラム)

 「コンテキストメニュー・インストーラ」のコーディングがすべて終わりましたので、以下にまとめておきます。

「コンテキストメニュー・インストーラ」完成プログラム
    '//========================================
    '//
    '//    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のコンテキストメニューに追加される「コンテキストメニュー用ソフト」を作成していきます。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
IEのコンテキストメニュー用インストーラーとソフトの作成連載記事一覧
この記事の著者

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー