1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| function GetProcessMemoryInfoFromProcessName(ProcessName:String; out MemorySize:Cardinal):Boolean; var hProcess:Cardinal; function GetProcessID(Exename: string): DWORD; var hProcSnap: THandle; pe32: TProcessEntry32; begin result := 0; hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); if hProcSnap <> INVALID_HANDLE_VALUE then begin pe32.dwSize := SizeOf(ProcessEntry32); if Process32First(hProcSnap, pe32) = true then begin while Process32Next(hProcSnap, pe32) = true do begin if pos(Exename, pe32.szExeFile) <> 0 then result := pe32.th32ProcessID; end; end; CloseHandle(hProcSnap); end; end; function GetProcessMemorySize(Process:Cardinal; out MemSize: Cardinal): Boolean; var l_pPMC: PPROCESS_MEMORY_COUNTERS; l_pPMCSize: Cardinal; begin if Process = 0 then begin Result := False; Exit; end;
l_pPMCSize := SizeOf(PROCESS_MEMORY_COUNTERS);
GetMem(l_pPMC, l_pPMCSize); l_pPMC^.cb := l_pPMCSize;
if (GetProcessMemoryInfo(Process, l_pPMC, l_pPMCSize)) then MemSize := l_pPMC^.WorkingSetSize else MemSize := 0;
FreeMem(l_pPMC);
Result := True; end; begin result:=false; hProcess:=OpenProcess(PROCESS_QUERY_INFORMATION, false, GetProcessID(ProcessName)); try result:=GetProcessMemorySize(hProcess,MemorySize); finally CloseHandle(hProcess); end; end; |