2013年1月7日月曜日

パスとしてコピーを前面に持ってくる

パスとしてコピーのメニューはShift+右クリックで表示できます。

パスとしてコピー

しかしこの操作では片方の手をフトンから出さなければならず、とても寒いです。

そのまま前面に表示するのは、ちょっと難しいので、本来のメニューとは別に Shellコマンドで実装してみました。



レジストリのキーを作成します。
HKCU\Software\Classes\AllFilesystemObjects\shell\CopyPath\command

HKCU\Software\Classes\AllFilesystemObjects\shell\CopyPath\command

commandキーの既定のデータを入力します。

cmd.exe /c @echo %1|clip

commandキーを選択cmd.exe /c @echo %1|clip

スペースを含んだパスもコピーできます。
"%1" にすると""で囲んだパスがコピーされます。

HKCUをHKLMにするとすべてのユーザーが対象になります。元に戻すには追加したキーや値を削除します。

一瞬コマンドウィンドウが開くのが惜しいですが、無理な体勢を強いられコーヒーをこぼし、静まりかえった冬の真夜中に絶叫するよりましです。

これだけでは味気ないので、項目名とアイコンをお好みで追加します。

CopyPathキーを選択。
Icon (文字列値)を作成して、データをshell32.dll,-243にします。
MUIVerb (文字列値)を作成して、データを@shell32.dll,-30328にします。
CopyPathキーを選択"Icon"="shell32.dll,-243" @="cmd.exe /c @echo %1|clip"

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\AllFilesystemObjects\shell\CopyPath]
"Icon"="shell32.dll,-243"
"MUIVerb"="@shell32.dll,-30328"

[HKEY_CURRENT_USER\Software\Classes\AllFilesystemObjects\shell\CopyPath\command]
@="cmd.exe /c @echo %1|clip"

Shiftを押した時に同じ項目が2つ表示され、ショートカットキーも同じになっています。Aを押すごとに、選択が切り替わりEnterで決定できます。アイコンが付いているのがパスのみコピーで、本来のメニューは""で囲んだパスになります。

Shiftを押した状態の右クリックメニュー

"MUIVerb"="パスとしてコピー(&F)" … Fは空いているショートカットキー
"MUIVerb"="パスとしてコピー" … ショートカットキーなし
などにするとかぶらなくなります。

実用しているのは、もう少し工夫して表示位置が揃うようにしています。

[HKEY_CURRENT_USER\Software\Classes\AllFilesystemObjects\shell\CopyPath]
"Position"="bottom"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{F3D06E7C-1E45-4A26-847E-F9FCDEE59BE0}]
"flags"=dword:00000000

パスとしてコピーの表示位置を揃える