【发布时间】:2008-11-14 18:05:16
【问题描述】:
究竟如何使用 VB6 才能像从命令行一样调用任何 Windows shell 命令?
例如,一些微不足道的事情:
echo foo
【问题讨论】:
标签: windows command-line vb6
究竟如何使用 VB6 才能像从命令行一样调用任何 Windows shell 命令?
例如,一些微不足道的事情:
echo foo
【问题讨论】:
标签: windows command-line vb6
这是你的做法:
Shell "cmd echo foo", vbNormalFocus
【讨论】:
我一直使用 wshShell 对象的 Run 方法,在您在项目中引用 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 方法。
【讨论】:
Shell 和 ShellExecute?
http://msdn.microsoft.com/en-us/library/aa242087.aspx
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' Run Calculator.
【讨论】:
Shell "cmd /c echo foo"
【讨论】:
所有的组合
Shell Environ("COMSPEC") & " /c echo foo", vbNormalFocus
如果您希望支持 Windows 9x 或 me 等早期系统,您应该考虑扩展 COMSPEC 环境变量。
你也可以使用
获取进程idpid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus)
【讨论】:
只使用双引号:""...""
示例 - 发送确认通行证以完成任务:
shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"")
因为第一个" 在"C:\... 中关闭并且字符串会停止。
【讨论】: