Autor Beitrag
MKX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95

Win XP, Ubuntu Linux 7.02
Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Mo 17.10.05 13:33 
Ich habe mehrere externe Programme (*.exe) in einem Ordner auf der Festplatte, die nacheinander ausgeführt werden sollen. D.h. nachdem das 1. Programm beendet wurde, soll das 2. starten usw.. Wie mache ich das?
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mo 17.10.05 14:26 
Ich bin gerade an etwas ähnlichem dran. Das kannst du mit CreateProcess recht einfach gestalten.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  ExitCode: DWORD;
begin
  ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
  StartupInfo.cb := SizeOf(StartupInfo);

  CreateProcess(nil'Anwendung 1'nilnil, True, DETACHED_PROCESS, nilnil, StartupInfo, ProcessInfo);
  repeat
    GetExitCodeProcess(ProcessInfo.hProcess, ExitCode);
    Sleep(1);
  until ExitCode <> STILL_ACTIVE;

  CreateProcess(nil'Anwendung 2'nilnil, True, DETACHED_PROCESS, nilnil, StartupInfo, ProcessInfo);
  repeat
    GetExitCodeProcess(ProcessInfo.hProcess, ExitCode);
    Sleep(1);
  until ExitCode <> STILL_ACTIVE;
end;


So wie es hier ist blockiert die eigene Anwendung so lange bis alle zurückgekehrt sind. Du kannst das ganze auch in einen Thread auslagern oder Prüfst das ganze in einem Timer ab, der dann auch automatisch den nächsten Process anwirft.

Bevor es jemand anderes sagt. Ja es besteht auch die Möglichkeit ein Application.ProcessMessages in die Schleife einzubauen. Aber das halte ich für unsauber. Alleine schon deswegen, weil die Anwendung immer noch in der Methode steckt und vermeindlich wunderbar reagiert sich aber nicht beenden lässt. Sondern erst dann zu geht sobald die Methode beenden wurde. Was mitunter eine ganze Weile später sein dürfte. Nichts desto trotz erfreut sich diese Möglichkeit größter Beliebtheit.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mo 17.10.05 15:00 
da gäbe es auch noch ein Suche im MSDN WAITFORSINGLEOBJECT

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...