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;
相手が終わったから(終わるから)次にイッテミヨーってメッセージ送らないかぎり無理でしょうーか?<-自信がないので疑問文で閉めてみました。
編集 削除CreateProcessかShellExecuteExを使えば、WaitForSingleObjectで終了待ちが可能だけど、待ってる間はメッセージ処理が出来ないので、引数のタイムアウト設定を短くして必要な時間ループさせるか、スレッドにする方が良い。
編集 削除希望の動作を実現するには,すでにレスのあるCreateProcessの使用を
検討してみてください.
この掲示板で,CreateProcessまたは,ShellExcuteを検索すると,参考
になると思います.
ありがとうございました。解決しました。
編集 削除