Man ich steh mal wieder sehr stark auf dem Schlauch...
So siehts bei mir grad aus:
ComboBox17 mit
ItemIndex0 Idle
ItemIndex1 Normal
ItemIndex2 High
Edit153
Delphi-Quellcode:
var ProcID: Cardinal;
P: TCaption;
begin
//RunBatch
if form1.ComboBox17.ItemIndex=0 then form1.Edit153.Text:='IDLE_PRIORITY_CLASS';
if form1.ComboBox17.ItemIndex=1 then form1.Edit153.Text:='NORMAL_PRIORITY_CLASS';
if form1.ComboBox17.ItemIndex=2 then form1.Edit153.Text:='HIGH_PRIORITY_CLASS';
ProcID := 0;
P := Edit153.text;
RunProcess('C:\DRPEncPrediction.bat', SW_SHOW, TRUE, @ProcID {, Hier muss Priorität rein});
Kann aber nicht mal ne Variable in den RunProcess setzen.
Kommt immer diese Fehlermeldung:
To many actual parameters.
Irgendeine Idee. Deine Idee kann ich irgendwie nicht umsetzen.
Hier nochmal die Funktion von Luckie:
Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): Longword;
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
StartupInfo.wShowWindow := ShowCmd;
if not CreateProcess(nil,
@Filename[1],
nil,
nil,
False,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo)
then
Result := WAIT_FAILED
else
begin
if wait = FALSE then
begin
if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
exit;
end;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, Result);
end;
if ProcessInfo.hProcess <> 0 then
CloseHandle(ProcessInfo.hProcess);
if ProcessInfo.hThread <> 0 then
CloseHandle(ProcessInfo.hThread);
end;