Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Warten, solange anderes Fenster noch aktiv... (https://www.delphipraxis.net/69676-warten-solange-anderes-fenster-noch-aktiv.html)

Kadah_F 18. Mai 2006 14:33


Warten, solange anderes Fenster noch aktiv...
 
... Hallo alle zusammen, ich bin neu und bräuchte mal einen Rat.

Also:

Ich hab ein Programm in Delphi geschrieben... Dieses Programm führt auf Knopfdruck ein externes Programm (so eine Art DOS-basiertes WINZIP, welches Dateien komprimiert) aus.
Nachdem diese externe Datei ihren Zweck erfüllt und die gewünschte Datei komprimiert hat, soll diese komprimierte Datei in einen anderen Ordner verschoben werden.

Ich habe nun folgendes Problem:
Die Datei soll erst dann verschoben werden, wenn die externe Datei ihre Arbeit getan hat und sich selbst schließt.

Delphi-Quellcode:
begin
  // Öffnet externes Programm mit Startparametern
 ShellExec(Handle,'open',EXT_EXEC.EXE,'-9 "' + E_SelectFile.Text + '"','',SW_SHOWMINNOACTIVE);
  // UPX'te Datei wird in angegebenen Ornder verschoben
 MoveFile(PChar(E_SelectFile.Text),PChar(E_Destination.Text));
end;
Vor dem MoveFile sollte also ein Befehl kommen, welches mein Programm abfragen lässt, ob das externe Programm 'EXT_EXEC.EXE' noch läuft...

Wie kann ich das machen? :(

Ich bin für jede Anwort sehr dankbar. :pale:

MfG
Feraz

RavenIV 18. Mai 2006 14:49

Re: Warten, solange anderes Fenster noch aktiv...
 
versuch mal ShellExecuteEx bei MSDN
Diese Funktion wartet auf Beendigung des aufgerufenen Programmes.

Olli 18. Mai 2006 14:54

Re: Warten, solange anderes Fenster noch aktiv...
 
Oder schon aufbereitet ;)

Public Domain heißt, daß keinerlei Angabe über den Ursprung notwendig ist. Will heißen, daß es so benutzt werden kann, als hättest du es selber geschrieben ;)

ShellExecuteAndWaitA ist die ANSI-Variante, ShellExecuteAndWaitW die Unicode-Variante. Meistens würdest du sicher die ANSI-Variante benutzen: das nur weil, weil es bei dieser Frage schon früher Verwirrung gab ;)

Wie man sehen kann, fast 3 Jahre alt und noch immer aktuell ;)

RavenIV 18. Mai 2006 15:23

Re: Warten, solange anderes Fenster noch aktiv...
 
Zitat:

Zitat von Olli
... ShellExecuteAndWait...

das klingt für mich irgendwie nach JEDI-Komponenten...
Dort gibt es diese Funktion nämlich auch.

Nur mag ich die JEDI's nicht, weil man immer die kompletten JEDI installieren muss um einige Funktionen oder Komponenten zu benutzen.

Olli 18. Mai 2006 15:43

Re: Warten, solange anderes Fenster noch aktiv...
 
Hast du dir den Link überhaupt angeschaut? :roll: ... er führt auf meine private Webseite!
Glaubst du, ich würde es wagen bei den JEDIs zu klauen (also MPL-Code) und es danach unter PUBLIC DOMAIN zu stellen? :|

Vielleicht haben die ihren Code ja sogar von mir, ist schließlich PD und ich selber arbeite ja auch an verschiedenen JEDI-Projekten mit.

Nachtrag: Hier zum Vergleich eine Version der JclShell.pas. Nun überzeugt? Wie man sieht, heißt die Funktion bei den JEDIs ShellExecAndWait und unterscheidet sich doch in einigen Details von meiner Implementierung. Bspw. habe ich es so gemacht, daß man allein ShellExecuteAndWaitA/W() aufrufen kann und dennoch wahlweise die normale ShellExecute-Funktionalität oder die mit dem Warten bekommt.

Übrigens bin ich auch schon länger hier in diesem Forum aktiv, als es mein Anmeldedatum verrät: Hier im Forum suchenShellExecuteAndWait (oder direkt), die Forensuche hätte dir also durchaus weitergeholfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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