Einzelnen Beitrag anzeigen
Alt 20.02.2009, 21:48   #1
Ein externes Programm ausführen und warten, bis di
Bluesteel Bluesteel ist offline 20.02.2009, 21:48

Ein externes Programm ausführen und warten, bis dieses beendet ist


Dies erreicht man mit folgender Funktion:
Die Unit ShellAPI muss hinzugefügt werden.
Code:
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;
Beispielaufruf: ShellExecAndWait('C:\Windows\notepad.exe', nil);
__________________




 
Benutzerbild von Bluesteel
Bluesteel
Super-Moderator
Letzte Erfolge
Registriert seit: 27.05.2008
Ort: zu hause
Beitr?ge: 2.029
Abgegebene Danke: 510
Erhielt 302 Danke für 52 Beiträge
Downloads: 48
Uploads: 2
Nachrichten: 1565
Hits: 9626
Mit Zitat antworten