Hallo,
Ich starte eine Exe über nachfolgende Anweisung:
Delphi-Quellcode:
procedure TTaskControler.Start(ExeName, Parameter, Caption: string);
var
t : TTaskCntrl;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
t := TTaskCntrl.Create;
TaskLst.Add(t);
t.ExeName := ExtractFileName(ExeName);
t.Caption := Caption;
FillChar(StartupInfo, SizeOf(TStartupInfo),0);
StartupInfo.cb:=SizeOf(TStartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := 0;
{$D-}
if CreateProcess(nil,PChar(ExeName + ' ' + Parameter),nil,nil,false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS
,nil,nil,startupinfo,ProcessInfo) then
begin
t.ProcessHdl := ProcessInfo.hProcess;
t.ProcessID := ProcessInfo.dwProcessId;
t.WindowHdl := FindWindowByProcessId(t.ProcessID);
end;
{$D+}
end;
Nach CreateProcess möchte ich die ProcessID und das Programmhandle auslesen.
Die ProcessID scheint nicht zu stimmen.
Mit der
Jedi-Funktion GetPidFromProcessName bekomme ich eine andere ID zurück.
Was mache ich falsch ?
Gru0
Peter