Delphi获取进程占用内存


本文整理自网络,侵删。

  

获取一些系统进程要提升Debug权限,这个不用说了吧.

function GetProcessMemorySize(ProcessName: string;var Size:string;var PN:string): Boolean;
var
pProcess:THandle;
MemSize,t:Integer;
hProcSnap:THandle;
PPMCSize:Cardinal;
pe32:TProcessEntry32;
PPMC:PPROCESS_MEMORY_COUNTERS;
begin

  PPMCSize := SizeOf(PROCESS_MEMORY_COUNTERS);
  GetMem(PPMC, PPMCSize);
  PPMC^.cb:= PPMCSize;

  hProcSnap:=CreateToolHelp32SnapShot(TH32CS_SNAPALL,  0);
  if  hProcSnap=INVALID_HANDLE_VALUE  then  Exit;
  pe32.dwSize:=SizeOf(ProcessEntry32);
  if  Process32First(hProcSnap,pe32)=True then
      while  Process32Next(hProcSnap,pe32)=True  do
      begin
          if  uppercase(pe32.szExeFile)=uppercase(ProcessName)  then
          begin
            pProcess:=OpenProcess(PROCESS_ALL_ACCESS,FALSE, pe32.th32ProcessID);

            if (GetProcessMemoryInfo(pProcess,PPMC,PPMCSize)) then
             begin
               MemSize:=PPMC^.WorkingSetSize div 1024;
               t:= Length(IntToStr(MemSize))-2;
               Size:=IntToStr(MemSize);
               Insert(',',Size,t);
               PN:=ProcessName;
               FreeMem(PPMC);
               Result:=True;
             end
            else
             begin
               FreeMem(PPMC);
               Result:=False;
             end;

          end;
      end;
  CloseHandle(pProcess);
  CloseHandle(hProcSnap);
end;

 

用的时候就

procedure TForm1.Button1Click(Sender: TObject);
var
str,str2:string;
begin
if (GetProcessMemorySize('QQ.exe',str,str2)) then
 begin
    ShowMessage('进程: '+str2+' :当前内存使用:'+ str +'K');
 end;
end;

相关阅读 >>

Delphi 限制文本框中只接受数字

Delphi 将memorystream保存到字符串

Delphi 多核机器上编程实现将指定进程pid放到指定cpu上运行

Delphi 中string字符串转换byte[]字节数组

Delphi isvaliddatetime、isvaliddate、isvalidtime、isvaliddateday ... 判断时间是否合法

Delphi打开外部程序或文件

iniocp(小旋风服务套件)

Delphi winapi: getnextwindow - 获取指定窗口z上或z下的窗口的句柄

Delphi中ocx的动态注册方法

Delphi mediaplayer 实现录音

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...