指定したEXEが起動中かどうかの判断


ZZZ  2010-11-02 19:02:41  No: 39471

指定したEXE(Exe名)が起動中か起動していないか判断する簡単な方法ありますか?
起動したらフラグをたてて、起動終了とともにフラグを落とすという方法以外でありましたら教えてください。

よろしくお願いします。


Fusa  2010-11-02 21:22:55  No: 39472

http://delfusa.main.jp/delfusafloor/opensource/execontrol/20070709160841/ExeTerminate.dpr
http://delfusa.main.jp/delfusafloor/opensource/execontrol/20070709160841/ExeTerminateCommon.pas
http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/SystemUnit/SystemUnit.pas.txt

このあたりを見ていただくと、出来るかと思いますが
簡単ではないかな。


久美子  2010-11-06 06:13:09  No: 39473

ベスト方法とは思いませんが、CopyFileを実行して、成功すれば起動していない、失敗したら起動中という判定でどうですか。


  2010-11-06 06:59:05  No: 39474

ttp://mrxray.on.coocan.jp/Delphi/plSamples/330_AppProcessList.htm

ここの常連さんが書いている記事です。私もかなりお世話になっているサイトですが。
ここの記事のとおり、プロセスを一覧表示して、その中に含まれていれば実行中でよいでしょう。


na2546  2010-12-09 18:43:35  No: 39475

プロセスをカウントする方法ではどうでしょうか?
サンプル Delphi 7
返ってきた値が0であれば実行していない。
---------------------------------------------------------------
function GetExeCount(sExeName:string):integer;
Var
hProcesss : integer;
P32 : TPROCESSENTRY32 ;
i   : integer;
begin

  result := 0;
  i := 0;

  hProcesss := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  P32.dwSize := Sizeof(TPROCESSENTRY32);

  If Process32First(hProcesss, @P32) <> 0 Then
    begin
      repeat
        if sExeName = (P32.szExeFile) then inc(i)
      Until(Process32Next(hProcesss, @P32) = 0);
  end;

  CloseHandle(hProcesss) ;

  result := i;

end;
--------------------------------------------------------------


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

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






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