外部のプログラムを2つ順番に呼び出したいのですが

解決


yu  2008-06-28 00:17:41  No: 31091

外部の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;


もにゃ  2008-06-28 00:40:41  No: 31092

他のアプリケーションを起動し、終了するまで待つ
http://lupin.client.jp/delphi/index.html#46

とりあえずこんな感じで頑張ってみてください。
サンプルはグーグル先生がいろいろ教えてくれるはずです。


ぽぽろん  2008-06-28 01:06:12  No: 31093

もにゃさんのリンク先で十分と思いますが、WaitForSingleObjectとかを使うとアプリの終了を待って次にすすめますよ。


kosmin  2008-06-28 01:25:48  No: 31094

こんな感じで常用してます。

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;


yu  2008-06-28 07:16:47  No: 31095

無事解決しました。ご回答をいただきました皆様どうも有難うございました。


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

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






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