Delphi XE7 取得进程占用内存的两个函数


本文整理自网络,侵删。

 

使用单元:uses Psapi;

 

//取得指定进程占用内存

function GetProcessMemUse(PID: Cardinal): Cardinal;
var
  pmc: PPROCESS_MEMORY_COUNTERS; // uses psApi
  ProcHandle: HWND;
  iSize: DWORD;
begin
  Result := 0;
  iSize := SizeOf(_PROCESS_MEMORY_COUNTERS);
  GetMem(pmc, iSize);
  try
    pmc^.cb := iSize;
    ProcHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
      False, PID); // 由PID取得进程对象的句柄
    if GetProcessMemoryInfo(ProcHandle, pmc, iSize) then
      Result := pmc^.WorkingSetSize;
  finally
    FreeMem(pmc);
  end;
end;

//取得当前进程占用内存
function CurrentMemoryUsage: Cardinal;
 var
   pmc: TProcessMemoryCounters;
 begin
   pmc.cb := SizeOf(pmc) ;
   if GetProcessMemoryInfo(GetCurrentProcess, @pmc, SizeOf(pmc)) then
     Result := pmc.WorkingSetSize
   else
     RaiseLastOSError;
 end;
//调用上面两个函数,返回当前进程占用内存
function GetCurrentMemUse: Cardinal;
begin
//  Result := GetProcessMemUse(GetCurrentProcessId);
    Result:= CurrentMemoryUsage ;
end;

//显示
procedure TForm1.tmr1Timer(Sender: TObject);
begin
  stat1.Panels[0].Text := format('memory use: %d KB', [GetCurrentMemUse div 1024]);//1kb=1024b
end;

需要引用Winapi.PsAPI,win7 xe7测试通过    http://blog.sina.com.cn/s/blog_44fa172f0102vcp3.html

相关阅读 >>

Delphi字符串中取数字

Delphi 图像灰度化处理

怎样在Delphi中屏蔽flash控件的右键弹出菜单

Delphi tcolortohex 与 hextotcolor

Delphi写的简单的文件的打开和关闭

Delphi int64:是Delphi中最大的整数,64位有符号整数

最简单的Delphi程序(控制台)

Delphi 系统服务和普通forms程序共存一体的实现

Delphi 7 简单语法

Delphi 采用 tidhttp 访问 https 的网站,采用 tidtcpclient 访问 https 的网站

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



打赏

取消

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

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

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

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

评论

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