Как именно, используя VB6, я могу вызвать любую команду оболочки Windows, как в командной строке?
Например, что-то такое же тривиальное, как:
echo foo
Как именно, используя VB6, я могу вызвать любую команду оболочки Windows, как в командной строке?
Например, что-то такое же тривиальное, как:
echo foo
Вот как вы это делаете:
Shell "cmd echo foo", vbNormalFocus
Я всегда использовал метод 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.
Shell и ShellExecute?
http://msdn.microsoft.com/en-us/library/aa242087.aspx
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' Run Calculator.
комбинация всех
Shell Environ("COMSPEC") & " /c echo foo", vbNormalFocus
вам следует подумать о расширении переменной среды COMSPEC, если вы хотите поддерживать более ранние системы, такие как windows 9x или me.
Вы также можете получить идентификатор процесса, используя
pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus)
Shell "cmd /c echo foo"
Используйте только двойные кавычки: ""...""
Пример - отправьте подтверждение для выполнения задачи:
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