Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#12

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09:53
Ein anderer Vorschlag
Delphi-Quellcode:
uses Tlhelp32;

{$R *.dfm}
function getPid(const name: string): integer;
  var
    hProcSnap: THandle;
    pe32: TProcessEntry32;
begin
    result:= 0;
    hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
    if hProcSnap = INVALID_HANDLE_VALUE then exit;
    pe32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, pe32) = true then
       while Process32Next(hProcSnap, pe32) = true do
       begin
        if lowerCase( pe32.szExeFile) = name then
        begin
         result:= pe32.th32ProcessID;
         break;
        end;
       end;
    CloseHandle(hProcSnap);
end;

Procedure SetProcessPriority(const fn:String;Priority:Integer);
{IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS , HIGH_PRIORITY_CLASS, REALTIME_PRIORITY_CLASS}
var
   newhandle:Thandle;
begin
    newhandle := OpenProcess(PROCESS_SET_INFORMATION, false, getPid(fn));
    setpriorityclass(newhandle, Priority);
    CloseHandle(newhandle);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
   SetProcessPriority(Lowercase(ExtractFileName(Application.ExeName)),IDLE_PRIORITY_CLASS);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat