Thema: Delphi SetPriorityClass Problem

Einzelnen Beitrag anzeigen

Benutzerbild von glunzl
glunzl

Registriert seit: 21. Mär 2004
Ort: Reinbek
119 Beiträge
 
Delphi 7 Professional
 
#1

SetPriorityClass Problem

  Alt 11. Okt 2005, 21:29
Hallo!

Ich möchte einen Prozess auf eine andere Priorität bringen. Ich habe mir die Threads zum Thema Prozess Prioritätsänderung durchgelesen, habe bei der Umsetzung aber noch ein Problem:

Mit folgender Funktion hole ich mir das Handle von notepad.exe und speicher mir diese in eine globale Integer Variable mit Namen "ProcessID", da ich den Wert nochmal brauche (funktioniert soweit auch).
Delphi-Quellcode:
function TForm1.GetProcessID(sProcName: String): Integer;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := -1;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); // Snapschot erstellen
  if hProcSnap = INVALID_HANDLE_VALUE then exit; // Snapshot erstellt?

  pe32.dwSize := SizeOf(ProcessEntry32);

  { wenn es geklappt hat }
  if Process32First(hProcSnap, pe32) = true then
    { und los geht's: Prozess suchen}
    while Process32Next(hProcSnap, pe32) = true do
    begin
      if pos(sProcName, pe32.szExeFile) <> 0 then
        result := pe32.th32ProcessID;
    end;
  CloseHandle(hProcSnap);
end;
Anschließend versuche ich mit
  SetPriorityClass(ProcessID,(IDLE_PRIORITY_CLASS)); die Prio zu ändern. Im Taskmanager bleibt die Prio von notepad.exe aber auf "Normal".

Wenn ich hingegen
  SetPriorityClass(GetCurrentProcess,(IDLE_PRIORITY_CLASS)); benutze, wird meine eigene Anwendung (Projekt.exe) auf "Niedrig" gestellt.

Warum funktioniert das nicht mit dem geholten Handle von notepad.exe (notepad.exe läuft auch)

Gruß und Dank
Michael
Michael
  Mit Zitat antworten Zitat