サンプルコード

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をコピーしました