コマンドラインから行うのと同じように、VB6をどの程度正確に使用してWindowsシェルコマンドを呼び出すことができますか?
たとえば、次のような些細なことです。
echo foo
これがあなたがそれをする方法です:
Shell "cmd echo foo", vbNormalFocus
私は常に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メソッドに送信します。
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や私のような以前のシステムをサポートしたい場合は、COMSPEC環境変数を拡張することを検討する必要があります。
を使用してプロセスIDを取得することもできます
pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus)