プロが教える店舗&オフィスのセキュリティ対策術

VB6からCで作られたEXEを実行した戻り値を取得したいのですが
どのように記述すればよいのでしょうか?
制御が戻るまで固まらずに待ち続けるには
CreateProcessを使うと良いとは思いますが、
notepadなど一方的に動作させて終了するようなサンプルしかなく、
戻り値を取得するサンプルは見当たりませんでした。
戻り値といってもCのEXEは結果を標準出力で表示されるものですが・・・

何か良いサンプルはあるでしょうか?
CreateProcessを使わない方法でも構いません。

r = CreateProcess( _
cmd, _
param, _
ByVal 0&, _
ByVal 0&, _
0, _
NORMAL_PRIORITY_CLASS, _
ByVal 0&, _
vbNullString, _
si, _
pi _
)

A 回答 (2件)

>制御が戻るまで固まらずに待ち続けるには


プログラムが、イベントを処理してくれないとすると、タイマを使って
監視するしかないような気がします。
Dim ProcessHandle As Long 'プロセスハンドル(共通変数)
Dim TerminateCode As Long '終了コード(共通変数)
Private Sub Timer1_Timer()
If WaitForSingleObject(ProcessHandle, 0) = 0 Then
  GetExitCodeProcess ProcessHandle, TerminateCode
  Timer1.Interval = 0
End If
End Sub

http://msdn.microsoft.com/ja-jp/library/cc429427 …
http://msdn.microsoft.com/ja-jp/library/cc429117 …
    • good
    • 0

cmd.exeなどのShellから起動してリダイレクトでファイルに出力したほうがいいかもしれません



WSH経由で起動させれば プログラムの停止まで実行を待たせることも可能です

『Windows Scripting host Object Model』の参照設定を施し
dim wsh as New WshShell
wsh.run "cmd /c プログラムパス > 出力ファイル名", 5, 1
Open "出力ファイル名" for input as #1
' ファイルの入力処理
Close
といった具合で ・・・

参照設定を行わないのであれば
dim wsh as Object
Set esh = Createobject("WScript.Shell")
といった具合です
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています