Entwickler-Ecke
Windows API - Programme sollen nacheinander starten
atom-as - Di 11.05.04 22:38
Titel: Programme sollen nacheinander starten
Hallo, ich hoffe ich bin hier richtig.
Ich möchte eine automatische Installation von diversen Programmen
realisieren. Zur Zeit geht das auch, ich wähle aus was installiert werden soll,
das Delphi Programm erstellt darauf eine Batch-Datei, die dann aufgerufen wird.
Ich würde es aber am liebsten ohne die DOS Box machen.
Das Problem was ich habe er startet alle Installationen gleichzeitig.
Ich brauche also einen Befehl der wartet bis eine Installation abgeschlossen
ist.
Habe versucht das mit der Shellexecute zu machen aber irgendwie will das nicht
starten, hier mal ein Beispiel
ShellExecute(Handle, nil,'cmd.exe /c', 'start /wait e:\blast.exe /Q /M /Z',nil,sw_sHOW);
mit dem start /wait unter DOS geht das, oder gibt es eine Möglichkeit
das er erst zur nächsten Installation stringt wenn der blast.exe beendet ist.
Bitte keine komplizierten Codes, ich bin gerade erst Anfänger.
Vielen Dank!!!
atom-as - Mi 12.05.04 13:51
O Gott, das ist mir zu kompliziert.
Das Problem ist ja auch das ich mehrere Parameter mit übergeben muß.
Delete - Mi 12.05.04 14:33
Soll das ein Witz sein? :?
Das Beispiel von Assarbads Seite ist eine komplette Unit. Die speicherst du auf deinem PC, bindest sie in dein Projekt ein und rufst die Funktion "ShellExecuteAndWaitA" (als Beispiel) einfach mit den Parametern auf, so wie du das von "ShellExecute" kennst. Die einzige Neuheit ist der letzte Parameter
Delphi-Quelltext
1: 2: 3: 4:
| function ShellExecuteAndWaitA(hWnd: HWND; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer; bWait: BOOL): HINST; |
Und was wird der wohl für eine Aufgabe haben? Richtig: Wenn
true, dann sorgt er dafür, dass gewartet wird. ;)
Mach´s nicht so kompliziert.
Einfach mal was ausprobieren!
bms - Mi 12.05.04 15:05
Leider hat die Funktion von Assarbad einen kleinen ... nein, Fehler ist es nicht, aber leider hat Assarbad die möglichkeit nicht genutzt es ganz richtig zu machen. Er hat den gleichen Fehler gemacht den auch andere ...AndWait Funktionen gemacht haben. Wird die Funktion ausgeführt, dann arbeitet das eingene Programm die Messages nicht ab. Für diese Zeit "hängt" das Programm, bis das andere Programm beendet wurde.
Hier hätte ich, wenn ich die Funktion neu überarbeite, auch die Möglichkeit geboten die Mesages abzuarbeiten. Eventuell hätte es schon gereicht ein Boolean Parameter hinzuzufügen, mit dem man bestimmen kann ob ProcessMessages bei jeder Schleife mit ausgeführt werden soll.
Motzi - Mi 12.05.04 18:30
Nur so nebenbei.. in Assarbads Version gibt es keine While-Schleife in der ProcessMessages aufgerufen werden könnte..! Die Funktion suspendiert sich mit einem Aufruf von WaitForSingle selbst (bzw der Thread der sie aufruft) und wird damit solange schlafen gelegt bis der Prozess beendet ist...
Und das ist auch das einzig richtige.. es ließe sich aber eventuell mit Hilfe einer anderen Wait-API-Funktion realisieren..
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!