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里formatfloat的用法

Delphi 转换swf到exe

Delphi windows 编程[19] - 改变菜单项的状态: getmenustate、enablemenuitem

delhpi如何直接获得webbrowser输入的xml文件

Delphi 过滤字符串特殊符号的函数

Delphi 新版内存表 fdmemtable

Delphi 数据库获取所有用户名

Delphi 使用indy idftp 通过android 上传文件

Delphi 实现放大效果

Delphi tparallel并行性能测试

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



打赏

取消

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

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

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

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

评论

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