![]() |
Programm ausführen und warten bis es beendet wurde
Ich habe schon herausgefunden, wie ich soetwas anstelle, aber das will bei keinem Beispiel klappen.
Mein Code:
Delphi-Quellcode:
Ich hoffe es ist verständlich geschildert.
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_SHOWMAXIMIZED; 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; //Hier wird die Funktion aufgerufen und erst wenn das Programm beendet wurde sollen die Befehle danach ausgeführt werden procedure TForm1.Image3Click(Sender: TObject); begin FormStyle := fsNormal; ShellExecAndWait(config.Strings[0], ''); FormStyle := fsStayOnTop; SetFocus; end; |
Re: Programm ausführen und warten bis es beendet wurde
Hast Du es alternativ mal mit
![]() |
Re: Programm ausführen und warten bis es beendet wurde
Die Version klappt auch nicht.
Ich habe einfach die verlinkte Unit eingebunden und folgendes in meinem Code geändert:
Delphi-Quellcode:
Es passiert genau dasselbe wie bei meinen zahlreichen anderen Versuchen: Das Programm öffnet sich und, egal ob ich etwas in dem Programm mache oder nicht, nach ca. 5 sek. kommt wieder mein Programm in den Vordergrund.
procedure TForm1.Image3Click(Sender: TObject);
begin FormStyle := fsNormal; ShellExecuteAndWait(Application.Handle, 'open', PChar(config.Strings[0]), nil, PChar(ExtractFileDir(config.Strings[0])), 0, False); FormStyle := fsStayOnTop; SetFocus; end; |
Re: Programm ausführen und warten bis es beendet wurde
Hallo,
mal in Tip in eine andere Richtung. Ich hatte mal das gleiche Problem. Habe ewig Codes gesucht und getestet. Ohne Erfolg. Bis ich festgestellt habe, das es an dem aufgerufenem Programm lag. Das Programm war das "Ulead PhotoImpact 12\Iedit.exe". Diese EXE hatte nur den Startbilschirm angezeigt und dann die "Iedit_.exe" (das eigentliche Programm) gestartet. Nachdem ich die Iedit_.exe aufrufe, funktioniert es wie gewollt, aber ohne den Startbilschirm. Geht dadurch sogar etwas schneller. Gruß Klaus |
Re: Programm ausführen und warten bis es beendet wurde
Auf sowas würde ich auch nicht kommen :lol:
|
Re: Programm ausführen und warten bis es beendet wurde
Komisch. Mit einem anderen Programm geht es auf einmal.
Wobei ich 5 sek. warten muss bis nach Beendigung des Programms, wieder mein Form auftaucht. Ich habe vorher swriter.exe von OpenOffice aufgerufen. Weiß jemand was daran problematisch seien könnte? [edit] Genau das Problem, das von RaSoWa1 beschrieben wurde. Aus swriter.exe wird soffice.exe. Vielen Dank für den Tipp! [/edit] [edit2] Doch nicht! Mein Programm schiebt sich trotzdem nach 5sek in den Vordergrund. Obwohl ich soffice.exe aufgerufen habe. [/edit2] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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 by Thomas Breitkreuz