掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
指定したexeが起動しているかの判別方法 (ID:8844)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Win95,98,Me でするにはどうすればいいでしょうか? uses TLHelp32; function GetProcessModule(dwPID:DWORD;dwModuleID:DWORD; var Me32:TModuleEntry32):Boolean; var hModuleSnap:THandle; cMe32:TModuleEntry32; begin result := false; hModuleSnap := CreateToolHelp32Snapshot(TH32CS_SNAPMODULE,dwPID); if hModuleSnap = INVALID_HANDLE_VALUE then exit; cMe32.dwSize := SizeOf(TModuleEntry32); if Module32First(hModuleSnap,cMe32) then begin repeat if cMe32.th32ModuleID = dwModuleID then begin Me32 := cMe32; result := true; end; until (result or not Module32Next(hModuleSnap,cMe32)); end else result := false; CloseHandle(hModuleSnap); end; function GetProcessList(SL:TStrings):Boolean; var hProcessSnap:THandle; Pe32:TProcessEntry32; bGotModule:Boolean; Me32:TModuleEntry32; begin hProcessSnap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0); if hProcessSnap = INVALID_HANDLE_VALUE then begin result := false; exit; end; Pe32.dwSize := SizeOf(TProcessEntry32); if Process32First(hProcessSnap,Pe32) then begin repeat bGotModule := GetProcessModule(Pe32.th32ProcessID,Pe32.th32ModuleID,Me32); if bGotModule then SL.AddObject(Me32.SzExePath,TObject(Pe32.th32ProcessID)); until not Process32Next(hProcessSnap,Pe32); result := True; end else result := false; CloseHandle(hProcessSnap); end; function IsExefileRunning(ExeFilename:string):Boolean; var SL:TStringList; i:integer; begin result := false; SL := TStringList.Create; try if GetProcessList(SL) then begin for i := 0 to SL.Count-1 do SL[i] := UpperCase(ExtractFileName(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.