Entwickler-Ecke
Windows API - shellexecute DOS-Fenster nicht schließen
holger - Mo 03.10.05 12:36
Titel: shellexecute DOS-Fenster nicht schließen
Hallo Leute,
Mit dem Befehl
Delphi-Quelltext
1:
| ShellExecute(0,nil, PChar('tracert'),Pchar('192.168.80.25'),Pchar(''),SW_NORMAL) |
öffne ich ein DOS-Fenster. Hier im Beispiel mit "Tracert 192.168.80.25"
Wie kann ich verhindern, daß sich das DOS-Fenster sofort nach abarbeiten des Befehles "Tracert 192.168.80.25" wieder schließt?
Ich könnte auch eine Batchdatei mit dem Inhalt
starten.
Aber ich kann das doch bestimmt auch mit dem ShellExecute hin bekommen.
Wie geht das?
Vielen Dank im Voraus
Holger
Moderiert von
raziel: Delphi-Tags hinzugefügt.
raziel - Mo 03.10.05 12:50
Hallo,
Indem du die Shell per
cmd /K direkt aufrufst:
Delphi-Quelltext
1:
| ShellExecute(0, nil, PChar('cmd.exe'), PChar('/K tracert 192.168.80.25'), nil, SW_NORMAL); |
der
tracert Befehl wird hier dann per Parameter übergeben.
Gruß,
raziel
holger - Mo 03.10.05 13:22
Das Funktioniert.
Danke, Danke.
CodexX - Di 27.02.07 19:05
Da ich eine darauf aufbauende Frage habe, stell eich sie hier, statt ein neues Topic zu eröffnen.
/K hält zwar das Fenster offen, jedoch kommt am Ende die Zeile für eine Eingabeaufforderung. Mir wäre es jedoch lieber hier ein "Press any key..." zu sehen und das Fenster dann per Tastendruck zu schließen. In einer Batch-Datei wäre das einfach mit "@pause" machbar. Dazu müsste man bei Shellexecute jedoch zwei Befehle übergeben können, die nacheinander ausgeführt werden.
Lässt sich das irgendwie realisieren?
(Versuche in der Art von '/K tracert 192.168.80.25' +#10#13 + '@pause' scheiterten leider.)
Chatfix - Di 27.02.07 20:11
dann schreib doch eine .BAT-Datei und führe die aus.
Dann kannst du ale Befehle dort reinpacken die du brauchst ;)
CodexX - Mi 28.02.07 01:42
Also das soll schon ohne Extra-Dateien auskommen. Der Inhalt ist dynamisch und müsste als temporäre Datei zusammengesetzt werden, ausgeführt und wieder gelöscht. Nene, das ist zum umständlich. Ich möchte ja nur wissen, ob das mit einem Trick machbar ist oder ob ich dafür wirklich auf eine Extra-Komponente wie TDosCommand zurückgreifen muss.
jaenicke - Mi 28.02.07 08:13
Ja
Denn das geht nur z.B. mit CreateProcess + Pipes, und da sind wir wieder bei TDosCommand... ;-)
Aber wo ist dabei das Problem?
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!