2008-11-14 2 views

ответ

12

Вот как это сделать:

Shell "cmd echo foo", vbNormalFocus 
9

Я всегда использовал метод Run объекта WshShell, который доступен после ссылки на хост-объектной модели Windows Script в вашем проекте:

Dim shell As wshShell 
Dim lngReturnCode As Long 
Dim strShellCommand As String 

Set shell = New wshShell 

strShellCommand = "C:\Program Files\My Company\MyProg.exe " & _ 
    "-Ffoption -Ggoption" 

lngReturnCode = shell.Run(strShellCommand, vbNormalFocus, vbTrue) 

Вы получаете те же функции, что и у e normal Shell, но окончательный параметр позволяет вам решить, следует ли синхронно запускать программу обстрела. Вышеупомянутый вызов с помощью vbTrue является синхронным. Использование vbFalse запускает программу асинхронно.

И, как отмечено в предыдущих ответах, вам нужно запустить командную оболочку с помощью переключателя «/ c» для выполнения внутренних команд, таких как «echo foo» из вашего вопроса. Вы отправляете «cmd/c echo foo» в метод Run.

+0

lngReturnCode = shell.Run (strShellCommand, vbNormalFocus, vbTrue) – nh32rg 2013-01-14 16:56:35

4

сочетание всех

Shell Environ("COMSPEC") & " /c echo foo", vbNormalFocus 

вы должны думать в расширении переменной среды COMSPEC, если вы хотите поддержать более ранние системы, такие как Windows 9x или меня.

Вы также можете получить идентификатор процесса с помощью

pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus) 
-1

использовать только двойные кавычки: ""...""

Пример - отправить пройти подтверждение, чтобы сделать задачу:

shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"") 

потому что первые " закрыты в "C:\... и t он будет останавливаться.


Ahora explico ан Español
Solo США Doble Комильяс: ""...""

EJEMPLO - Mando ООН пройти пункт Проверить л creacion де л Фаарей:

shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"") 

л саиз эс дия ли Primera Комильясла " se cierra con las comillas de la ruta "C:\... y se pierde la cadena String.

:) Espero SIRVA у Буэна Суерте