进程信息的获取

Stiven_PFan 2009-06-23 04:46:30
我想在delphi程序中,获得指定内存进程的内存占用大小,进程建立的用户名等相关信息,如何实现呢
如比指定smss.exe,就得到他的内存占用,
就像任务管理器里面一样可以显示出进程占用的内存大小,最好是连CPU的占用率也能得到.谢谢
...全文
52 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2009-06-23
  • 打赏
  • 举报
回复
uses Psapi
function GetProcessMemorySize(_sProcessName: string; var _nMemSize: Cardinal): Boolean;
var
l_nWndHandle, l_nProcID, l_nTmpHandle: HWND;
l_pPMC: PPROCESS_MEMORY_COUNTERS;
l_pPMCSize: Cardinal;
begin
l_nWndHandle := FindWindow(nil, PChar(_sProcessName));

if l_nWndHandle = 0 then
begin
Result := False;
Exit;
end;

l_pPMCSize := SizeOf(PROCESS_MEMORY_COUNTERS);

GetMem(l_pPMC, l_pPMCSize);
l_pPMC^.cb := l_pPMCSize;

GetWindowThreadProcessId(l_nWndHandle, @l_nProcID);
l_nTmpHandle := OpenProcess(PROCESS_ALL_ACCESS, False, l_nProcID);

if (GetProcessMemoryInfo(l_nTmpHandle, l_pPMC, l_pPMCSize)) then
_nMemSize := l_pPMC^.WorkingSetSize
else
_nMemSize := 0;

FreeMem(l_pPMC);

Result := True;
end;

//Beispiel

procedure TForm1.Button1Click(Sender: TObject);
var
l_nSize: Cardinal;
begin
if (GetProcessMemorySize('Unbenannt - Editor', l_nSize)) then
ShowMessage('Size: ' + IntToStr(l_nSize) + ' byte')
else
ShowMessage('Error');
end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧