指定したEXE(Exe名)が起動中か起動していないか判断する簡単な方法ありますか?
起動したらフラグをたてて、起動終了とともにフラグを落とすという方法以外でありましたら教えてください。
よろしくお願いします。
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
このあたりを見ていただくと、出来るかと思いますが
簡単ではないかな。
ベスト方法とは思いませんが、CopyFileを実行して、成功すれば起動していない、失敗したら起動中という判定でどうですか。
ttp://mrxray.on.coocan.jp/Delphi/plSamples/330_AppProcessList.htm
ここの常連さんが書いている記事です。私もかなりお世話になっているサイトですが。
ここの記事のとおり、プロセスを一覧表示して、その中に含まれていれば実行中でよいでしょう。
プロセスをカウントする方法ではどうでしょうか?
サンプル 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;
--------------------------------------------------------------
ツイート | ![]() |