на счет загруженности процессора покопайся в tlhelp32, psAPI
как пример выделенная память процессу:
| Код | uses tlhelp32, psAPI; //...
function GetProcessID(AName : PChar ) : Integer; var lSnapHandle, lProcHandle: THandle; ProcStruct : PROCESSENTRY32; lProcessPath : Pchar; PID : Cardinal; begin Result := 0; lSnapHandle := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); if lSnapHandle = 0 then exit; ProcStruct.dwSize := sizeof( PROCESSENTRY32 );
if Process32First(lSnapHandle, ProcStruct) then begin try repeat lProcessPath := ProcStruct.szExeFile; if uppercase(lProcessPath) = uppercase(AName) then begin PID := ProcStruct.th32ProcessID; //åñëè ïîíàäîáèòüñÿ Result := PID; Break; end; until not Process32Next(lSnapHandle, ProcStruct); finally CloseHandle(lSnapHandle); end; end; end;
procedure GetProcessMemory(Process: Integer): Integer; var pmc: PPROCESS_MEMORY_COUNTERS; cb: Integer; begin Result := 0; cb := SizeOf(_PROCESS_MEMORY_COUNTERS); GetMem(pmc, cb); try pmc^.cb := cb; if GetProcessMemoryInfo(Process, pmc, cb) then Result := pmc^.WorkingSetSize; finally FreeMem(pmc); end; end;
procedure TForm1.Button1Click(Sender: TObject); var lProcess: Integer; begin lProcess := GetProcessID(PChar(Edit1.Text)); if lProcess <> 0 then ShowMessage(IntToStr(GetProcessMemory(lProcess))); end;
| |