ShellExecuteメソッドcmd
を使用してウィンドウを非表示にします。次のレジストリ設定は、単一のファイルに対して機能します。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\MyCopyAsPath]
[HKEY_CLASSES_ROOT\*\shell\MyCopyAsPath\command]
@="wscript D:\\VB_scripts\\SU\\1007076.vbs \"%1\""
D:\VB_scripts\SU\1007076.vbs
次のように読み取ります。
option explicit
On Error GoTo 0
If WScript.Arguments.Count = 1 Then
Dim objShell
Set objShell = CreateObject("shell.application")
objShell.ShellExecute "cmd.exe" _
, "/C echo(" & WScript.Arguments(0) & "|clip", "", "open", 0
Set objShell = nothing
Else
MsgBox "wrong numer of parameters"
End If
Wscript.Quit
上記のスクリプトは、単一ファイル(またはファイルショートカットのターゲット)のフルパスを返し、追加CRLF
(キャリッジリターンとラインフィード)します。次のように、CRLF
使用のset /P
トリックを省略できます。
objShell.ShellExecute "cmd.exe" _
, "/C <NUL set /P =""" & WScript.Arguments(0) & """|clip", "", "open", 0
"
二重引用符のペアでパスを囲む次の改善:
objShell.ShellExecute "cmd.exe" _
, "/C <NUL set /P =""""" & WScript.Arguments(0) & """""|clip", "", "open", 0
参考までに、Copy as Path
コンテキストメニューを保存したレジストリキーを次に示します。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\CopyAsPathMenu]
"ProgrammaticAccessOnly"="Apartment"
[HKEY_CLASSES_ROOT\*\shell\CopyAsPathMenu\DropTarget]
"CLSID"="{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}"
Shift
ファイル/フォルダを右クリック(または選択)しながらキーを押し、そしてを選択しますCopy As Path
。