web-dev-qa-db-ja.com

VB6を使用してWindowsシェルコマンドを呼び出すにはどうすればよいですか?

コマンドラインから行うのと同じように、VB6をどの程度正確に使用してWindowsシェルコマンドを呼び出すことができますか?

たとえば、次のような些細なことです。

echo foo
10
Ray Vega

これがあなたがそれをする方法です:

Shell "cmd echo foo", vbNormalFocus 
12
dub

私は常にwshShellオブジェクトのRunメソッドを使用しました。これは、プロジェクトでWindows ScriptHostオブジェクトモデルを参照した後に使用できます。

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を使用すると、プログラムが非同期で開始されます。

また、前の回答で述べたように、質問の「echo foo」などの内部コマンドを実行するには、「/ c」スイッチを指定してコマンドShellを実行する必要があります。 「cmd/cechofoo」をRunメソッドに送信します。

9
JeffK

ShellとShellExecute?

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

Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)   ' Run Calculator.
7
Ed Guiness
Shell "cmd /c echo foo"
4
raven

すべての組み合わせ

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

windows 9xや私のような以前のシステムをサポートしたい場合は、COMSPEC環境変数を拡張することを検討する必要があります。

を使用してプロセスIDを取得することもできます

pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus)
4
Eugenio Miró