start cmd.exe minimizado / oculto via contextmenu

1

Eu criei um atalho para o menu de contexto adicionando um novo registro com essa chave RE_SZ: iniciar cmd.exe / min / c echo% 1 | clip

Isso me permite copiar o caminho do arquivo rightclicked.

MAS: Ele sempre abrirá uma janela cmd por um curto período de tempo.

Como posso ocultar essa janela do cmd?

    
por Janik H 30.11.2015 / 06:57

1 resposta

3

Ocultar a janela cmd usando o método ShellExecute . A próxima configuração do registro funciona para um único arquivo:

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\""

em que D:\VB_scripts\SU07076.vbs é o seguinte:

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

O script acima retorna o caminho completo de um único arquivo (ou destino de um atalho de arquivo) e adiciona CRLF (retorno de carro e avanço de linha). Você pode omitir o truque CRLF usando set /P da seguinte forma:

  objShell.ShellExecute "cmd.exe" _
    , "/C <NUL set /P =""" & WScript.Arguments(0) & """|clip", "", "open", 0

Próximo aprimoramento para cercar o caminho em um par de aspas duplas " :

  objShell.ShellExecute "cmd.exe" _
    , "/C <NUL set /P =""""" & WScript.Arguments(0) & """""|clip", "", "open", 0

FYI, aqui está a chave de registro que armazenou o menu de contexto 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}"
    
por 30.11.2015 / 11:51