Zitat:
Am besten startest du den Prozess mit CreateProcess
Na gut erstmal wieder CreateProcess anschauen . . .
Delphi-Quellcode:
function ExecNewProcess
( ProgramName : String;
Wait : Boolean
var LProcInfo : Dword) : Dword;
var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;
begin
FillChar(StartInfo,SizeOf(TStartupInfo),#0);
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
StartInfo.cb := SizeOf(TStartupInfo);
CreateOK := CreateProcess(nil, PChar(ProgramName), nil, nil,False,
CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS,
nil, nil, StartInfo, ProcInfo);
{ na wirklich gestartet ? }
if CreateOK then
begin
//may or may not be needed. Usually wait for child processes
if Wait then WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end
else
begin
ShowMessage('Läuft nicht: '+ProgramName);
end;
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
LProcInfo := ProcInfo.hProcess;
GetExitCodeProcess(ProcInfo.hProcess, Result ) {ProcInfo ist ErrorCode};
end;
Version 2: Ohne das 'ProcessMessage' gehts dann auch und jetzt habe ich die ProcessId....
Grüße