ShellExecuteで実行させたプログラムga終了まで次へ進めないようにするには?

解決


umi  2005-11-18 22:42:38  No: 18802  IP: [192.*.*.*]

ShellExecuteで実行中のプログラムが終了するまで次に進めないようにするにはどうすれば良いのでしょうか?  下記例ではIHKTSU.exeのプログラム実行中に「次の仕事」メッセージが表示されてしまうのです。Application.MessageBoxでのメッセージがアクティブ中は次へ進むことはできませんよね。そんな感じにしたいのです。よろしくお願いします。
var
  result:Integer;
const 
  strExeName  = 'C:\TurboData\IHKTSU.exe';
begin
  result:=Application.MessageBox('変換しますか?','変換',mb_OKCancel);
  if result=IDOK then
    ShellExecute(Handle,nil, PChar(strExeName),nil,nil,SW_SHOW);

  result:=Application.MessageBox('次の仕事?','仕事',mb_OKCancel);
end;

編集    削除
ヨーダ  2005-11-18 23:00:28  No: 18803  IP: [192.*.*.*]

相手が終わったから(終わるから)次にイッテミヨーってメッセージ送らないかぎり無理でしょうーか?<-自信がないので疑問文で閉めてみました。

編集    削除
できるけど  2005-11-18 23:24:10  No: 18804  IP: [192.*.*.*]

CreateProcessかShellExecuteExを使えば、WaitForSingleObjectで終了待ちが可能だけど、待ってる間はメッセージ処理が出来ないので、引数のタイムアウト設定を短くして必要な時間ループさせるか、スレッドにする方が良い。

編集    削除
Mr.XRAY  URL  2005-11-19 07:35:29  No: 18805  IP: [192.*.*.*]

希望の動作を実現するには,すでにレスのあるCreateProcessの使用を
検討してみてください.
この掲示板で,CreateProcessまたは,ShellExcuteを検索すると,参考
になると思います.

編集    削除
umi  2005-12-02 01:05:02  No: 18806  IP: [192.*.*.*]

ありがとうございました。解決しました。

編集    削除