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 winapi: shellexecute - 打开外部程序或文件

Delphi 根据字符串分隔符位置取值

Delphi 内存加载并运行exe程序

Delphi动态建立panel无法更改颜色?

Delphi驱动结束进程

Delphi trimleft 删除字符串左边的空格

Delphi 取windows登录用户名

Delphi实现音频传输

Delphi 图像二值化

Delphi 日期相减 比较大小 过期时间函数

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



打赏

取消

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

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

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

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

评论

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