今回は、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
このサンプルは他の設定項目にも応用できますので、試してみてください。
コメント(降順)