【发布时间】:2011-07-21 05:35:14
【问题描述】:
我已经创建了这个函数来获取各种网络进程的路径,比如svchost、Firefox等。代码如下:
function GetProcessPath(var pId:Integer):String;
var
Handle: THandle;
begin
Result := '';
try
Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, pID);
if Handle <> 0 then
begin
try
SetLength(Result, MAX_PATH);
if GetModuleFileNameEx(Handle, 0, PChar(Result), MAX_PATH) > 0 then
SetLength(Result, StrLen(PChar(Result)))
else
Result := '';
finally
CloseHandle(Handle);
end;
end;
except
on E:Exception do
ShowMessage(E.ClassName + ':' + E.Message);
end;
end;
我的问题是我没有得到所有进程的路径。它适用于获取 Firefox 的路径以及其他类似的用户级进程。但是对于像alg、Svchost这样的进程,我无法通过这种方法获取路径。我的猜测是我必须使用一些不同的 API。我该如何解决这个问题?
我使用的是 Windows XP,32 位。
【问题讨论】:
标签: delphi