外部の2つのプログラムたとえばAA.exeとBB.exeを順番に(AA.exe)を起動しAAが終了した時点で(BB.EXE)が、起動されるような仕組みを作りたいのですが、下記の記述では、AA.exeとBB.exeが、同時に起動されてしまいます。何か、AA.exeが終了してからBB.exeが、起動する方法を教えていただけませんか?
現在の記述例
procedure TMAINFRM.Button2Click(Sender: TObject);
begin
ShellEXECUTE(0,nil,pchar('C:\TEST\AA.exe'),nil,nil,sw_normal);
ShellEXECUTE(0,nil,pchar('C:\TEST\BB.exe'),nil,nil,sw_normal);
end;
他のアプリケーションを起動し、終了するまで待つ
http://lupin.client.jp/delphi/index.html#46
とりあえずこんな感じで頑張ってみてください。
サンプルはグーグル先生がいろいろ教えてくれるはずです。
もにゃさんのリンク先で十分と思いますが、WaitForSingleObjectとかを使うとアプリの終了を待って次にすすめますよ。
こんな感じで常用してます。
procedure TMAINFRM.Button2Click(Sender: TObject);
begin
WaitShell('C:\TEST\AA.exe');
WaitShell('C:\TEST\BB.exe');
end;
//----
procedure TMAINFRM.WaitShell(S: string);
var si:Tstartupinfo;
pi:Tprocessinformation;
begin
getstartupinfo(si);
createprocess(nil,pchar(s),nil,nil,false,create_default_error_mode,
nil,pchar(getcurrentdir),si,pi);
while (waitforsingleobject(pi.hProcess,0)=wait_timeout) do
application.ProcessMessages;
end;
無事解決しました。ご回答をいただきました皆様どうも有難うございました。
ツイート | ![]() |