當前位置:編程學習大全網 - 編程語言 - 關於DELPHI中檢測指定進程的問題

關於DELPHI中檢測指定進程的問題

分類: 電腦/網絡 >> 程序設計 >> 其他編程語言

問題描述:

下面的壹段代碼中是找到系統中的所有進程,然後檢測是否有自己感興趣的進程存在,我看不明白的是壹直沒有看到其中有“感興趣”的進程的變量,那怎麽會對比檢測出來是否存在呢,請各位大蝦指教!(聲明,下面這段代碼是沒有問題的,正在正常使用,小第看不明白)

ction FindProc(ProcName: string): boolean; 找進程是否有**進程

var

OK: Bool;

hPL, hML: THandle;

ProcessStruct: TProcessEntry32;

ModuleStruct: TModuleEntry32;

begin

Result := False;

hPL := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); 創建當前內存的壹個快照,將返回的句柄傳遞給Process32First

再用OpenProcess打開這個進程,從而獲得該進程的進程句柄。最後,利用這個句柄,使用ReadProcessMemory

ProcessStruct.dwSize := SizeOf(TProcessEntry32);

OK := Process32First(hPL, ProcessStruct);

while OK do

begin

if UpperCase(ProcessStruct.szExeFile) = UpperCase(ProcName) then 查看進程名是不是某個感興趣的進程

begin

Result := True;

find path info

hML := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessStruct.th32ProcessID);

ModuleStruct.dwSize := SizeOf(TModuleEntry32);

Module32First(hML, ModuleStruct);

if hML > 0 then

begin

uzei:= ModuleStruct.szExePath;

end;

CloseHandle(hML);

end;

OK := Process32Next(hPL, ProcessStruct);

end;

解析:

所謂的感興趣的進程,僅僅是指定了壹個進程名

通過函數傳入該名稱,然後用進程快照去比較罷了

if UpperCase(ProcessStruct.szExeFile) = UpperCase(ProcName) then

這句代碼已經比較了從快照中取出的進程名與妳感興趣的進程名

如果相同,則快照中的進程中妳感興趣的

也許妳看不懂的是進程入口之類的東西,那些都是由API決定的

妳記下就行

  • 上一篇:搖小船基本功動作要領
  • 下一篇:2020年的平均工資出爐了,妳2020年的工資到達平均水平了嗎?
  • copyright 2024編程學習大全網