![]() |
ProcessID nach Programmstart
Hallo,
Ich starte eine Exe über nachfolgende Anweisung:
Delphi-Quellcode:
Nach CreateProcess möchte ich die ProcessID und das Programmhandle auslesen.
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; Die ProcessID scheint nicht zu stimmen. Mit der Jedi-Funktion GetPidFromProcessName bekomme ich eine andere ID zurück. Was mache ich falsch ? Gru0 Peter |
Re: ProcessID nach Programmstart
Hi,
sollte eigentlich so funktionieren. :?: Was sagt den der Taskmanager oder besser der ![]() ![]() Du solltest das Prozess-Handle am Schluss freigeben. Wenn du zwischenzeitlich ein Handle brauchst, dann kannst du das Handle des Prozesses über ![]() Gruß BlackDragon |
Re: ProcessID nach Programmstart
Zitat:
Die Handel gebe ich an anderer Stelle in einem Thread frei. Ich kann die Exe modal oder als MDI starten. Ein Task überwacht das Programmende und stellt dann Exitcode bereit und gibt die Handles frei. Inzwischen habe ich aber gemerkt, das hier wohl ein Timing Problem mitspielt. Ich hole über die ProzessID das Fensterhandle. Das muss jedoch zeitlich verzögert erfolgen. Gruß Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
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