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

解決


umi  2005-11-18 22:42:38  No: 18802

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

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


できるけど  2005-11-18 23:24:10  No: 18804

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


Mr.XRAY  URL  2005-11-19 07:35:29  No: 18805

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


umi  2005-12-02 01:05:02  No: 18806

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加