如何使用VB6调用Windows shell命令?

Ray*_*ega 10 windows vb6 command-line

如何正确使用VB6我可以像命令行一样调用任何Windows shell命令?

例如,一些简单的事情:

echo foo
Run Code Online (Sandbox Code Playgroud)

dub*_*dub 12

这是你如何做到的:

Shell "cmd echo foo", vbNormalFocus 
Run Code Online (Sandbox Code Playgroud)


Jef*_*ffK 9

我一直使用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)
Run Code Online (Sandbox Code Playgroud)

您获得与普通Shell语句相同的功能,但最终参数允许您决定是否同步运行带壳程序.上面的调用与vbTrue是同步的.使用vbFalse异步启动程序.

并且,如前面的答案中所述,您需要使用"/ c"开关运行命令shell以执行内部命令,例如问题中的"echo foo".您将"cmd/c echo foo"发送到Run方法.

  • 此代码适用于 vbScript,而不是问题中所要求的 VB6。对于只了解 VB6 并正在寻找 VB6 问题答案的人来说,这可能会非常令人困惑。 (2认同)

Ed *_*ess 7

Shell和ShellExecute?

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

Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)   ' Run Calculator.
Run Code Online (Sandbox Code Playgroud)


Eug*_*iró 5

所有的组合

Shell Environ("COMSPEC") & " /c echo foo", vbNormalFocus
Run Code Online (Sandbox Code Playgroud)

如果您希望支持像 windows 9x 或 me 这样的早期系统,您应该考虑扩展 COMSPEC 环境变量。

您还可以使用

pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus)
Run Code Online (Sandbox Code Playgroud)