Hallöchen,
ich möchte eine Anwendung, die ich mit meinem Programm starte, auf die Priorität "höher als normal" setzen. Dazu verwende ich folgenden Code:
Delphi-Quellcode:
//ProgrammStarten benutze ich im Allgemeinen, um Programme aufzurufen; darum ist der Code freier gehalten.
procedure ProgrammStarten(Dateiname,Dateipfad,Parameter:string;Threadzahl:integer;
PriorClass,Prioritaet:integer);
var Prozesse: array of TStart;
i,x:integer;
PClass:Cardinal;
Prior:TThreadPriority;
begin
Prior:=tpNormal;
PClass:=Normal_Priority_Class;
case Prioritaet of
-3: Prior:=tpIdle;
-2: Prior:=tpLowest;
-1: Prior:=tpLower;
0: Prior:=tpNormal;
1: Prior:=tpHigher;
2: Prior:=tpHighest;
3: Prior:=tpTimeCritical;
end;
case PriorClass of
-1: PClass:=Idle_Priority_Class;
0: PClass:=Normal_Priority_Class;
1: PClass:=High_Priority_Class;
2: PClass:=Realtime_Priority_Class;
end;
if Threadzahl<2 then Threadzahl:=2; //gibt sonst Fehler ;-)
SetLength(Prozesse,Threadzahl);
SetPriorityClass(GetCurrentProcess(), PClass);
for i:=0 to Threadzahl-1 do
begin
Prozesse[i]:=TStart.Create(true); //"TStart" siehe unten
uStart.Pfad:=Dateipfad;
uStart.Datei:=Dateiname;
uStart.Parameter:=Parameter;
Prozesse[i].Priority:=Prior;
Prozesse[i].Resume;
if i=Threadzahl-1 then
for x:=0 to Threadzahl-1 do
Prozesse[i].Terminate;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var Anwendung,Ziel,Parameter:string;
begin
Anwendung:='Dingsbums.exe';
Ziel:='C:\';
Parameter:='';
ProgrammStarten(Anwendung,Ziel,Parameter,1,1,1);
end;
TStart beihaltet dies als implementation:
Delphi-Quellcode:
procedure TStart.Execute;
begin
ChDir(Pfad);
ShellExecute(
handle,'
open',PChar(Datei),PChar(Parameter),
NIL,SW_SHOWNORMAL);
end;
constructor TStart.Create(CreateSuspended:boolean);
begin
inherited Create(CreateSuspended);
Priority:=tpHighest;
FreeOnTerminate:=True;
end;
Leider wird die Priorität keinesfalls verändert; jedenfalls ist das nicht im TaskManager ersichtlich. (Das Program wird ansonsten richtig gestartet.)
Habt ihr vielleicht eine Idee, was da falsch läuft?
Liebe Grüße,
Aike