Как вызвать команду оболочки Windows с помощью VB6?

Как именно, используя VB6, я могу вызвать любую команду оболочки Windows, как в командной строке?

Например, что-то такое же тривиальное, как:

echo foo

Ответ 1

Вот как вы это делаете:

Shell "cmd echo foo", vbNormalFocus 

Ответ 2

Я всегда использовал метод 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)

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

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

Ответ 4

комбинация всех

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

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

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

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

Ответ 5

Shell "cmd /c echo foo"

Ответ 6

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

Пример - отправьте подтверждение для выполнения задачи:

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

потому что первый " закрыт в "C:\..., и строка остановится.


Ahora explico en Español
Solo usa doble comillas: ""...""

Ejemplo - mando un pass para confirmar la creacion de la tarea:

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

la causa es que la primera comillas " se cierra con las comillas de la ruta "C:\... y se pierde la cadena String.

:) Espero sirva y buena suerte