【AutoIt】ファイルとフォルダーの右クリックメニューに「パスをコピー」を追加|レジストリ操作

今回は、Win10/Win11 ファイルとフォルダーの右クリックメニューに「パスをコピー」を追加 のレジストリ編集をボタン1つで行うサンプルコードを紹介します。

今回紹介するサンプルコードは様々なプログラムで応用ができますので、参考にしてみてください。

目次

サンプルコード

ウィンドウを作成し、ウィンドウにボタンを追加します。

ボタンが押されると、レジストリに値を書き込み、メッセージボックスを表示します。

#RequireAdmin; 管理者として実行
#include <GUIConstantsEx.au3>


Opt("TrayIconHide", 1);トレイアイコンの非表示
$Gui = GUICreate("右クリックメニューに「パスをコピー」を追加", 530, 100); ウィンドウの作成
$Directory = GUICtrlCreateButton("フォルダーのパスをコピーを追加", 10, 15, 510, 30); ボタンの作成
$File = GUICtrlCreateButton("ファイルのパスをコピーを追加", 10, 55, 510, 30); ボタンの作成
GUISetState(); ウィンドウを表示します。

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            Exit
        Case $msg = $Directory
            CopyDirPath(); ユーザー定義関数を実行します。
            MsgBox(0, "フォルダーのパス", "フォルダーのパスをコピーを追加しました!"); メッセージを表示します。
        Case $msg = $File
            CopyFilePath(); ユーザー定義関数を実行します。
            MsgBox(0, "ファイルのパス", "ファイルのパスをコピーを追加しました!"); メッセージを表示します。
    EndSelect
WEnd


Func CopyDirPath();フォルダーの右クリックメニューに「フォルダーのパスをコピー」を追加
    RegWrite("HKEY_CLASSES_ROOT\Directory\shell\CopyDirPath", "", "REG_SZ", "フォルダーのパスをコピー"); レジストリに値を書き込みます。
    RegWrite("HKEY_CLASSES_ROOT\Directory\shell\CopyDirPath\command", "", "REG_SZ", "mshta vbscript:clipboarddata.setdata(""text"",""%1"")(close)")
EndFunc   ;==>CopyDirPath

Func CopyFilePath();ファイルの右クリックメニューに「ファイルのパスをコピー」を追加
    RegWrite("HKEY_CLASSES_ROOT\*\shell\CopyFilePath", "", "REG_SZ", "ファイルのパスをコピー")
    RegWrite("HKEY_CLASSES_ROOT\*\shell\CopyFilePath\command", "", "REG_SZ", "mshta vbscript:clipboarddata.setdata(""text"",""%1"")(close)")
EndFunc   ;==>CopyFilePath

チェックボックスを追加

GUICtrlCreateCheckbox ( “テキスト”, 左からの距離, 上からの距離 [, 幅 [, 高さ [, スタイル= -1 [, 拡張スタイル = -1]]]] ) でチェックボックスを作成します。

$DirectoryCheck = GUICtrlCreateCheckbox("", 500, 15, 30, 30); チェックボックスを作成
$FileCheck = GUICtrlCreateCheckbox("", 500, 55, 30, 30)

チェックボックスのメッセージを取得し、チェック状態を判断

GUICtrlRead ( ) 関数でチェックボックスの状態を取得します。

Case $msg = $DirectoryCheck
           If GUICtrlRead($DirectoryCheck) = $GUI_CHECKED Then
               
Case $msg = $FileCheck
            If GUICtrlRead($FileCheck) = $GUI_CHECKED Then

チェックボックスがチェックされれば、ボタンの表示を「追加」に、チェックが外されれば、ボタンの表示を「削除」に変更します。

Case $msg = $DirectoryCheck
            If GUICtrlRead($DirectoryCheck) = $GUI_CHECKED Then
                GUICtrlSetData($Directory, "フォルダーのパスをコピーを削除")
            Else
                GUICtrlSetData($Directory, "フォルダーのパスをコピーを追加")
            EndIf       
Case $msg = $FileCheck
            If GUICtrlRead($FileCheck) = $GUI_CHECKED Then
                GUICtrlSetData($File, "ファイルのパスをコピーを削除")
            Else
                GUICtrlSetData($File, "ファイルのパスをコピーを追加")
            EndIf

レジストリ削除を追加した上記すべてのサンプルコード

#RequireAdmin; 管理者として実行
#include <GUIConstantsEx.au3>


Opt("TrayIconHide", 1);トレイアイコンの非表示
$Gui = GUICreate("右クリックメニューに「パスをコピー」を追加", 530, 100); ウィンドウの作成
$Directory = GUICtrlCreateButton("フォルダーのパスをコピーを追加", 10, 15, 480, 30); ボタンの作成
$File = GUICtrlCreateButton("ファイルのパスをコピーを追加", 10, 55, 480, 30)

$DirectoryCheck = GUICtrlCreateCheckbox("", 500, 15, 30, 30); チェックボックスを作成
$FileCheck = GUICtrlCreateCheckbox("", 500, 55, 30, 30)

GUISetState(); ウィンドウを表示します。

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE; 閉じるボタンが押されたら
            Exit
        Case $msg = $Directory; もしもボタンが押されたら
            If StringInStr(GUICtrlRead($Directory), "追加") Then; もしもボタンの文字に「追加」が含まれていれば
                CopyDirPath(); フォルダーのパスをコピーを追加
                MsgBox(0, "フォルダーのパス", "フォルダーのパスをコピーを追加しました!"); メッセージを表示します。
            Else; もしもボタンの文字に「追加」が含まれていなければ
                DelCopyDirPath(); フォルダーのパスをコピーを削除
                MsgBox(0, "フォルダーのパス", "フォルダーのパスをコピーを削除しました!")
            EndIf
        Case $msg = $File
            If StringInStr(GUICtrlRead($File), "追加") Then; もしもボタンの文字に「追加」が含まれていれば
                CopyFilePath(); ファイルのパスをコピーを追加
                MsgBox(0, "ファイルのパス", "ファイルのパスをコピーを追加しました!"); メッセージを表示します。
            Else; もしもボタンの文字に「追加」が含まれていなければ
                DelCopyFilePath(); ファイルのパスをコピーを削除
                MsgBox(0, "ファイルのパス", "ファイルのパスをコピーを削除しました!")
            EndIf
        Case $msg = $DirectoryCheck; もしもチェックボックスがチェックまたはチェックが外されたら
            If GUICtrlRead($DirectoryCheck) = $GUI_CHECKED Then; もしもチェックボックスがチェックされていれば
                GUICtrlSetData($Directory, "フォルダーのパスをコピーを削除"); ボタンの文字を「削除」に変更します。
            Else; もしもチェックボックスがチェックされていなければ
                GUICtrlSetData($Directory, "フォルダーのパスをコピーを追加"); ボタンの文字を「追加」に変更します。
            EndIf
        Case $msg = $FileCheck
            If GUICtrlRead($FileCheck) = $GUI_CHECKED Then
                GUICtrlSetData($File, "ファイルのパスをコピーを削除")
            Else
                GUICtrlSetData($File, "ファイルのパスをコピーを追加")
            EndIf
    EndSelect
WEnd


Func CopyDirPath();フォルダーの右クリックメニューに「フォルダーのパスをコピー」を追加
    RegWrite("HKEY_CLASSES_ROOT\Directory\shell\CopyDirPath", "", "REG_SZ", "フォルダーのパスをコピー"); レジストリに値を書き込みます。
    RegWrite("HKEY_CLASSES_ROOT\Directory\shell\CopyDirPath\command", "", "REG_SZ", "mshta vbscript:clipboarddata.setdata(""text"",""%1"")(close)")
EndFunc   ;==>CopyDirPath

Func DelCopyDirPath()
    RegDelete("HKEY_CLASSES_ROOT\Directory\shell\CopyDirPath"); レジストリの値を削除します。
EndFunc   ;==>DelCopyDirPath

Func CopyFilePath();ファイルの右クリックメニューに「ファイルのパスをコピー」を追加
    RegWrite("HKEY_CLASSES_ROOT\*\shell\CopyFilePath", "", "REG_SZ", "ファイルのパスをコピー")
    RegWrite("HKEY_CLASSES_ROOT\*\shell\CopyFilePath\command", "", "REG_SZ", "mshta vbscript:clipboarddata.setdata(""text"",""%1"")(close)")
EndFunc   ;==>CopyFilePath

Func DelCopyFilePath()
    RegDelete("HKEY_CLASSES_ROOT\*\shell\CopyFilePath")
EndFunc   ;==>DelCopyFilePath
右クリックメニューに「パスをコピー」を追加

このサンプルは他の設定項目にも応用できますので、試してみてください。

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次