掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
指定したexeが起動しているかの判別方法 (ID:8842)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
WindowsNT4,2000,XP では以下のようにして判別できます。 Win95,98,Me では適用できません。 uses PsAPI; function GetAllProcessModuleName(SL:TStringList):Boolean; var ProcessIDs:array[0..200] of DWORD; Num4,NumProcess:DWORD; i:integer; hProcess,hModule:THandle; lpBaseName:PChar; s:string; begin result := false; if not EnumProcesses(@ProcessIDs,SizeOf(ProcessIDs),Num4) then begin ShowMessage('EnumProcesses Failed!'); Exit; end; NumProcess := Num4 div SizeOf(DWORD); GetMem(lpBaseName,101); for i := 0 to NumProcess -1 do begin hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, ProcessIDs[i]); EnumProcessModules(hProcess,@hModule,SizeOf(hModule),Num4); Num4 := GetModuleBaseName(hProcess,hModule,lpBaseName,100); SetString(s,lpBaseName,Num4); SL.Add(s); CloseHandle(hProcess); end; FreeMem(lpBaseName); result := true; end; function IsExefileRunning(ExeFilename:string):Boolean; var SL:TStringList; i:integer; begin result := false; SL := TStringList.Create; try if GetAllProcessModuleName(SL) then begin for i := 0 to SL.Count-1 do SL[i] := UpperCase(SL[i]); result := SL.IndexOf(UpperCase(ExeFilename)) <> -1; end; finally SL.Free; end; end; // メモ帳が起動されているかどうかを判断する procedure TForm1.Button1Click(Sender: TObject); begin if IsExefileRunning('Notepad.exe') then ShowMessage('Running') else ShowMessage('not Running'); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.