Autor |
Beitrag |
chris_davidi
      
Beiträge: 76
Windows 98 SE
Delphi 3
|
Verfasst: Mi 17.09.03 10:48
Hallo...
Habe immernoch folgendes Problem. Ich habe eine BAT- Datei welche ausgeführt werden soll... Wenn alles durchgelaufen ist, wird ein Druck einer beliebiger Datei benötigt. Danach soll sich das Ende schließen.
Meine Frage, wie kann ich es unter Delphi schaffen, das meine BAT- Datei gestartet wird, am Ende der Druck irgendeiner Taste passiert und es sich am Ende schließt, dass Fenster.
Habe mit einigen Sachen rumprobiert... Bin aber noch immer auf keine Lösung gekommen.
Hat jemand von euch einen Rat? Oder einen Code...? Bin echt hilfslos...
Vielen Dank im Vorraus
Gruss Chris
Moderiert von Tino: Titel geändert & Topic verschoben.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.09.03 11:12
Starte den Kommandointerpreter mit deiner Batch-Datei als Parameter mit ShellexecuteEx oder CreateProcess. Dann bekommst du Prozess-Handle welches du WaitForSingleObject übergeben kannst und warten bis der Prozess beendet ist. Code dazu gibt es in den FAQ.
|
|
chris_davidi 
      
Beiträge: 76
Windows 98 SE
Delphi 3
|
Verfasst: Mi 17.09.03 11:27
Was ist ein Kommandointerpreter? Wie geht das? Kannst du mir den Code dazu machen, oder einen Link geben, wo das genauer erklärt wird? Habe es in der FAQ nicht gefunden... 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.09.03 11:34
Unter Windows9x heißt er command.com und unter NTff. cmd.com. Deswegen hab eich allgemein Kommandointerpreter geschrieben.
|
|
chris_davidi 
      
Beiträge: 76
Windows 98 SE
Delphi 3
|
Verfasst: Mi 17.09.03 12:34
Ok...
Mit
Delphi-Quelltext 1:
| ShellExecute(Application.Handle, 'open', 'command.com', nil, nil, SW_SHOW); |
Kann ich den Kommandointerpreter ja dann starten, aber wie übergebe ich es, dass er meine Batch-Datei startet? Und wie erhalte ich dann das Fenster Handle? Kannst du mir da auch helfen? Wäre nett. 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.09.03 12:40
Ich habe gesagt ShellexecuteEX oder CreateProcess. Beide haben eine Parameterliste und zu beiden gibt es in den FAQ ein Beispiel.
|
|
chris_davidi 
      
Beiträge: 76
Windows 98 SE
Delphi 3
|
Verfasst: Mi 17.09.03 12:53
Über ShellexecuteEX steht nichts in der FAQ. Darum meinte ich, dass du ShellExecute meinst.
Oder meintest du diesen Beitrag der FAQ?
www.delphi-forum.de/viewtopic.php?t=2887
Werde aus dem leider gar nicht schlau...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.09.03 13:00
|
|
chris_davidi 
      
Beiträge: 76
Windows 98 SE
Delphi 3
|
Verfasst: Mi 17.09.03 13:08
Und wie öffne binde ich CreateProcess dann ein, also zum Beispiel nach einem ButtonClick?
Delphi-Quelltext 1:
| CreateProcess('test.bat'); |
Wie lautet der Code dazu, CreateProcess anzuwenden?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.09.03 13:14
Könnte mal bitte jemand übernehmen? Ich gebe auf.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.09.03 14:00
Ich übernehme ... *zur Stelle eilt* ... @chris_davidi: Am einfachsten kommst du weg, indem du dir mal die vorhandenen Beispiele anschaust. Ich war mal so nett, dir ein Beispiel rauszusuchen, dass du dir bitte ansiehst und dann 1:1 kopieren kannst:
Programme starten ohne ShellExecute (DP)
Beim nächsten Mal bitte etwas mehr Eigeninitiative, sonst bin ich der Erste (oder vielleicht der Nächste ...), der deine Fragen künftig ignorieren wird.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 17.09.03 14:06
chris_davidi hat folgendes geschrieben: | Wie lautet der Code dazu, CreateProcess anzuwenden? |
Den Link den Luckie gepostet hat zeigt dir eine Funktion die du so aufrufen kannst:
Delphi-Quelltext 1:
| RunProcessAndWait ('test.bat'); |
Gruß
Tino
|
|
Licki
      
Beiträge: 132
Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
|
Verfasst: Mi 17.09.03 17:22
Ja, chris_davidi, das ist eigentlich relativ einfach. Eine Datei auszuführen und warten lassen, bis diese beendet ist und danach die nächste zu starten. Dafür gibt es einige Funktionen, viele sind davon im Netz zu finden, wenn du welche brauchst, PM an mich.
Aber meiner Meinung nach ist das ja nicht sein Problem, das Problem liegt denke ich laut seiner Aussage daran, die Batch-Datei zu schließen nachdem alles abgelaufen ist? Wie Lucki sagt, mit einem Fenster-Handle. Persönlich weiß ich leider nicht wie das geht (die Logik ist aber klar), würde mich aber selbst auch interessieren.
|
|