Autor Beitrag
atom-as
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 11.05.04 22:38 
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!!!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 11.05.04 22:45 
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Di 11.05.04 23:11 
Eventuell auch RunProcessAndWait Prozedur. Hab die Suche gelch mit ausgeführt: www.delphiforum.de/viewtopic.php?p=91256

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
atom-as Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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ß.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: 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.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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..

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!