从进程获取内存Ram和CPU使用率

时间:2019-03-02 19:13:29

标签: delphi

我如何获得进程使用的内存ram和cpu使用率?而不是整个CPU。

我在互联网上搜索的所有代码总是从整个CPU中检索,但是我需要从自己的过程中检索这些信息。

我正在使用delphi 10.1

上面我与其他人一起处理的代码上面的代码非常接近真实的内存使用情况:

var
  ProcHand        : THandle;
  i               : integer;
  WorkingSet      : array[0..$3FFF - 1] of DWORD;
  Shared, Privates, total : Integer;
begin
  ProcHand := OpenProcess(PROCESS_ALL_ACCESS, False, GetCurrentProcessId);

  Shared    := 0;
  Privates  := 0;
  total     := 0;

  if QueryWorkingSet(ProcHand, @WorkingSet, SizeOf(WorkingSet)) then
  begin
    for I := 1 to WorkingSet[0] do
    begin
      if ((WorkingSet[I] and $00000FFF) and $100 <> 0) then Inc(Shared) else Inc(Privates);

      Application.ProcessMessages;
    end;
  end;

  total     := WorkingSet[0] * 4;
  Shared    := Shared * 4;

  Result := Format('%.2f e %f > Memory %.2f', [total / 1024, shared / 1024, ((total / 1024) - (shared / 1024))]);

  CloseHandle(ProcHand);

代码基于https://www.codeproject.com/Articles/87529/Calculate-Memory-Working-Set-Private-Programmatica

0 个答案:

没有答案