如何查找进程(没有窗口)的进程ID
在编程过程中,有时需要查找一些进程的进程ID。例如:我们知道Explorer.exe的窗口类是“Progman”,窗口名是“Program Manager”,就可以通过FindWindow函数来先得到Explorer.exe的窗口句柄,再通过GetWindowThreadProcessId函数来得到Explorer.exe的进程ID。但是有些进程是没有窗口的(如:lsass.exe、winlogon.exe等进程),那么要该如何才能得到它的进程ID呢?
[解决办法]
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//创建系统快照
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
//先初始化 FProcessEntry32 的大小
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
while Ret do
begin
New(p);
p.ProcessID := FProcessEntry32.th32ProcessID;
p.filePath := FProcessEntry32.szExeFile;
p.ProcessName := UpperCase(ExtractFileName(p.filePath));
p.filePath := ' ';
proclist.Add(p);
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
[解决办法]
api in advapi