Как мне вызвать команду оболочки Windows, используя VB6? - PullRequest
10 голосов
/ 14 ноября 2008

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

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

echo foo

Ответы [ 6 ]

12 голосов
/ 14 ноября 2008

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

Shell "cmd echo foo", vbNormalFocus 
9 голосов
/ 25 ноября 2008

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

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.

7 голосов
/ 14 ноября 2008

Shell и ShellExecute?

http://msdn.microsoft.com/en-us/library/aa242087.aspx

Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)   ' Run Calculator.
4 голосов
/ 27 февраля 2009
Shell "cmd /c echo foo"
4 голосов
/ 27 ноября 2008

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

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

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

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

pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus)
0 голосов
/ 12 июня 2015

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

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

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

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


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

Ejemplo - мандат и пароль для подтверждения:

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

Каза эс ква ла приме комильяс " Се Сьерра Кон лас Комильяс де ла рута "C:\... Се Пьер ля ла Кадена.

:) Espero sirva y buena suerte

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...