![]() |
Priorität eines anderen Programmes ändern
Ist es irgendwie möglich die Priorität eines anderen Programmes zu ändern? MIt
Delphi-Quellcode:
kann ich ja die priorität vom eigenen Programm ändern. Wie komm ich an den Process eines anderen Programmes ran - eventuell über handle? (muss ja irgendwie das "GetCurrentProcess" ersetzen um den process des anderen Programmes zu bekommen)
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
|
Re: Priorität eines anderen Programmes ändern
OpenProcess, sollte das sein, was du suchst. An die ProcessID kommst du mit einem CreateToolHelp32Snapshot oder über EnumProcesses dran. Beispiele dazu findest du auf
![]() |
Re: Priorität eines anderen Programmes ändern
Die ProcessID brauch ich nicht, damit gehts nicht... Oki, ich probiers mal mit OpenProcess...
|
Re: Priorität eines anderen Programmes ändern
Doch die brauchst du für OpenProcess, sonst hätte ich das ja nicht geschrieben, bevor du wieder fragst, wiue du an die ProcessID kommst. :roll:
|
Re: Priorität eines anderen Programmes ändern
OpenProcess ist wohl doch nicht das richtige denn
GetCurrentProcess() und OpenProcess(PROCESS_ALL_ACCESS, False, GetCurrentProcessId); Liefern nicht das gleiche |
Re: Priorität eines anderen Programmes ändern
Also bei mir geht das:
Delphi-Quellcode:
function SetProcessPriorty(ProcID: DWORD; Priority: DWORD): Boolean;
var hProcess: THandle; begin result := False; hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID); if hProcess <> 0 then begin result := SetPriorityClass(hProcess, Priority); end; end; |
Re: Priorität eines anderen Programmes ändern
@Luckie: Ich hatte mich bissl falsch ausgedrückt. Ich meinte mehr das ich weiß wie ich an die ProcessID ran komme.
Einfacher als mit CreateToolHelp32Snapshot und EnumProcesses gehts mit GetWindowThreadProcessId hab das jetzt folgendermaßen gelöst:
Delphi-Quellcode:
procedure setnewpriority(Anwendungshandle: Cardinal);
var dwActiveProcessId:DWORD; begin GetWindowThreadProcessId(Anwendungshandle, @dwActiveProcessId); SetPriorityClass(OpenProcess(PROCESS_ALL_ACCESS, False, dwActiveProcessId), HIGH_PRIORITY_CLASS); end; |
Re: Priorität eines anderen Programmes ändern
Ja, ich hatte nur mein Demo zu CreateToolHelp32Snapshot etwas aufgebohrt.
|
Re: Priorität eines anderen Programmes ändern
Thx Luckie,
jetzt kann ich auch mal an meinem Process-Lister weiter basteln... konnte nämlich bis dahin die Priorität weder auslesen, neu setzen geschweige denn den Prozess killen ;) |
Re: Priorität eines anderen Programmes ändern
Hi,
ich stehe vor dem selben Thema und hab ein Problem das ich ein Invalid Handle als Last Error bekomme. Kann mir ev. jemand auf die Sprünge helfen? Code: der zum invalid Handle führt.
Delphi-Quellcode:
damit gehts für das eigene Programm.
if SetPriorityClass(GetProcID(LMDFileOpenEdit1.Filename), Cardinal(ComboBox1.Items.Objects[ComboBox1.ItemIndex])) then
edit1.text:='OK' else edit1.text:=SysErrorMessage(GetLastError);
Delphi-Quellcode:
damit gehts für das andere Programm.
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
Delphi-Quellcode:
if SetProcessPriorty (GetProcID(LMDFileOpenEdit1.Filename),256)then
edit1.text:='OK' else edit1.text:=SysErrorMessage(GetLastError); Die PID ist korrekt welche ich auslese! Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz