Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Priorität eines anderen Programmes ändern (https://www.delphipraxis.net/15948-prioritaet-eines-anderen-programmes-aendern.html)

SirThornberry 7. Feb 2004 12:54


Priorität eines anderen Programmes ändern
 
Ist es irgendwie möglich die Priorität eines anderen Programmes zu ändern? MIt
Delphi-Quellcode:
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
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)

Luckie 7. Feb 2004 12:58

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 http://delphidemos.luckie-online.de .

SirThornberry 7. Feb 2004 12:59

Re: Priorität eines anderen Programmes ändern
 
Die ProcessID brauch ich nicht, damit gehts nicht... Oki, ich probiers mal mit OpenProcess...

Luckie 7. Feb 2004 13:00

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:

SirThornberry 7. Feb 2004 13:28

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

Luckie 7. Feb 2004 13:58

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;

SirThornberry 7. Feb 2004 14:50

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;

Luckie 7. Feb 2004 15:00

Re: Priorität eines anderen Programmes ändern
 
Ja, ich hatte nur mein Demo zu CreateToolHelp32Snapshot etwas aufgebohrt.

The-X 12. Feb 2004 13:53

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 ;)

renekr 17. Apr 2006 15:29

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:
if SetPriorityClass(GetProcID(LMDFileOpenEdit1.Filename), Cardinal(ComboBox1.Items.Objects[ComboBox1.ItemIndex])) then
edit1.text:='OK'
else
edit1.text:=SysErrorMessage(GetLastError);
damit gehts für das eigene Programm.
Delphi-Quellcode:
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
damit gehts für das andere Programm.
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.
Seite 1 von 2  1 2      

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