我如何获得进程使用的内存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