Seite 1 von 1

CPU-Last eines anderen Programms beeinflussen?

Verfasst: 04.09.2006 12:19
von derRaab
Hallo Leute!

Gibt es die Möglichkeit die Priorität eines extern mit "RunProgram" gestartetes Programm zu beeinflussen?

Das andere Programm lastet die CPU voll aus und so läuft mein eigentliches Programm nicht mehr sauber. Von anderen Programme ganz zu schweigen.

Bei Threads kann ich ja mit "ThreadPriority" die Priorität heruntersetzen. Gibt es etwas Ähnliches auch für externe Programme die ich gestartet habe? Die Process-Bibliothek gibt nix her. Und über WinAPI finde ich nix. Zumindest nichts was ich verstehe. :(

Hat vielleicht jemand einen Tipp? Danke

Verfasst: 04.09.2006 12:59
von myself
Du musst die handles des Main Threads, oder am besten aller threads rausfinden und diese per ThreadPriority herunterzusetzen.

Verfasst: 04.09.2006 14:24
von derRaab
Das hab ich mir schon gedacht, aber wie weißt Du auch nicht, oder?

Verfasst: 04.09.2006 18:14
von Sicro
Hier ein Beispielcode:

Code: Alles auswählen

Procedure SetPriority(ProgramID.l, PriorityLevel.l)
  Protected ProcessHandle.l

  ProcessHandle = OpenProcess_(#PROCESS_DUP_HANDLE + #PROCESS_SET_INFORMATION, #True, ProgramID)
  If ProcessHandle
    SetPriorityClass_(ProcessHandle, PriorityLevel)
    CloseHandle_(ProcessHandle)
  EndIf
EndProcedure

Result = RunProgram("notepad.exe", "", "", #PB_Program_Open)
If Result
  SetPriority(ProgramID(Result), #IDLE_PRIORITY_CLASS)     ; niedrige Prioritätsstufe
  ; SetPriority(ProgramID(Result), #NORMAL_PRIORITY_CLASS) ; normale Prioritätsstufe
  ; SetPriority(ProgramID(Result), #HIGH_PRIORITY_CLASS)   ; hohe Prioritätsstufe
  CloseProgram(Result)
EndIf
Mfg DerProgger

Verfasst: 05.09.2006 10:41
von derRaab
Vielen Dank DerProgger!

Komisch, in meiner winAPI-Doku finde ich den Befehl gar nicht. Egal. Dir vielen Dank! Wenn Du mal eine Flash Frage hast, immer gern...

:allright: