Liebe Leute,
ich verwende folgende Proc aus der CodeLib, um ein ext. Programm zu starten und auf sein Ende zu warten. Das funktioniert bei meinem Win7 und auf einem Win2003-Serversystem auch problemlos. Nur bei anderen WinXPs funktionieren offenbar weder Parameterübergabe noch das Warten. Ich habe schon gegoogelt, aber leider keinen Hinweis gefunden. Jemand eine Idee?
Danke und schöne Grüße,
frieder
Delphi-Quellcode:
procedure ShellExecAndWait(dateiname: string; Parameter: string);
var executeInfo: TShellExecuteInfo;
dw: DWORD;
begin
FillChar(executeInfo, SizeOf(executeInfo), 0);
with executeInfo do
begin
cbSize := SizeOf(executeInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
executeInfo.lpVerb := 'open';
executeInfo.lpParameters := PChar(Parameter);
lpFile := PChar(dateiname);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@executeInfo) then
dw := executeInfo.HProcess
else begin
ShowMessage('Fehler: ' + SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(dw);
end;
// Aufruf z.B.:
ShellExecAndWait(extractfilepath(paramstr(0)) + '\tools\prog.exe', tempverz + '\config.ini');