如何正确使用VB6,我可以调用任何Windowsshell命令,你会从命令行?
例如,像以下这样微不足道的东西:
echo foo
以下是你如何做到这一点:
Shell "cmd echo foo", vbNormalFocus
我一直使用wshShell对象的Run方法,在您的项目中引用Windows Script Host对象模型后可以使用该方法:
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”开关运行命令shell来执行内部命令,如问题中的“echo foo”。 你会发送“cmd / c回声富”到运行方法。
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
如果你想支持像Windows 9x或者我之前的系统,你应该考虑扩展COMSPEC环境变量。
您也可以使用获取进程ID
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:\...
关闭"C:\...
,字符串将停止。
Ahora explico enEspañol
独奏美国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先生和buena suerte