Einzelnen Beitrag anzeigen

hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

ProcessID nach Programmstart

  Alt 19. Mär 2009, 09:25
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
  Mit Zitat antworten Zitat