查看进程所用的内存(使用GetWindowThreadProcessId取得进程ID,OpenProcess打开进程和GetProcessMemoryInfo取得内存信息)

//

function GetProcessMemorySize(_sProcessName: string; var _nMemSize: Cardinal): Boolean;
var
    l_nWndHandle, l_nProcID, l_nTmpHandle: HWND;
    l_pPMC: PPROCESS_MEMORY_COUNTERS;
    l_pPMCSize: Cardinal;
begin
    l_nWndHandle := FindWindow(nil, PChar(_sProcessName));

    if l_nWndHandle = 0 then
    begin
        Result := False;
        Exit;
    end;

    l_pPMCSize := SizeOf(PROCESS_MEMORY_COUNTERS);

    GetMem(l_pPMC, l_pPMCSize);
    l_pPMC^.cb := l_pPMCSize;

    GetWindowThreadProcessId(l_nWndHandle, @l_nProcID);
    l_nTmpHandle := OpenProcess(PROCESS_ALL_ACCESS, False, l_nProcID);

    if (GetProcessMemoryInfo(l_nTmpHandle, l_pPMC, l_pPMCSize)) then
        _nMemSize := l_pPMC^.WorkingSetSize
    else
        _nMemSize := 0;

    FreeMem(l_pPMC);
    Result := True;
end;

 

posted @ 2016-03-16 18:57  findumars  Views(1996)  Comments(1Edit  收藏  举报