Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi cmd-exe die sich selbst mit Parameter aufruft (https://www.delphipraxis.net/103517-cmd-exe-die-sich-selbst-mit-parameter-aufruft.html)

wolle72 16. Nov 2007 19:20


cmd-exe die sich selbst mit Parameter aufruft
 
Hi,

ich progge gerade eine cmd-shell Datei. Diese muss mit Paramatern gestartet werden. Wenn diese Parameter falsch sind, wird das Programm beendet und eine Fehlermeldung ausgegeben. Jetzt würde ich aber gerne das selbe (mein) Programm mit der Hilfe automatisch im Fehlerfall aufrufen.

Ich tippe mal auf den Befehl ParamStr(0) und dann bin ich mir nicht sicher ob ShellExecute dann richtig wäre oder muss ich das mit einem anderen Befehl starten ?

Grüssle Wolle

DeddyH 16. Nov 2007 19:23

Re: cmd-exe die sich selbst mit Parameter aufruft
 
Wieso sollte ShellExecute nicht gehen?

SirThornberry 16. Nov 2007 19:24

Re: cmd-exe die sich selbst mit Parameter aufruft
 
CreateProcess ist (denke ich) eher das richtige weil du dort die pipes umlenken kannst so das die gestarteten Programme ihre Std.-Ausgabe etc. in deiner Console ausgeben können.

@DeddyH: ShellExecute sollte eventuell nicht gehen weil damit ein neues Konsolenfenster geöffnet wird (meine Vermutung)

DeddyH 16. Nov 2007 19:27

Re: cmd-exe die sich selbst mit Parameter aufruft
 
Müsste man mal ausprobieren :zwinker:

wolle72 17. Nov 2007 10:27

Re: cmd-exe die sich selbst mit Parameter aufruft
 
Zitat:

Zitat von SirThornberry
CreateProcess ist (denke ich) eher das richtige weil du dort die pipes umlenken kannst so das die gestarteten Programme ihre Std.-Ausgabe etc. in deiner Console ausgeben können.
@DeddyH: ShellExecute sollte eventuell nicht gehen weil damit ein neues Konsolenfenster geöffnet wird (meine Vermutung)

Genau das was ich suchte - die Ausgabe soll im selben Konsolenfenster sein.

Ich habe das ganze jetzt soweit auch fast hinbekommen. Da ich aber keine Ahnung von CreateProcess habe, habe ich einfach mal stupide was zusammengesucht und getippt. Jetzt bin ich mir nicht sicher ob das so auch passt oder Schwachsinn ist. Wäre schön, wenn das mal noch jemand anschauen könnte:

Delphi-Quellcode:
var
StartStruct: STARTUPINFO;
ProcInfo: PROCESS_INFORMATION;

und dann im Programm
CreateProcess(nil, PChar(ParamStr(0) + ' /?'), nil, nil, true, 0 , nil, nil, StartStruct, ProcInfo);
exit;
Das Verhalten ist jetzt so, dass wenn mein Programm mit einem falschen Parameter gestartet wurde, dann wird der CreateProcess aufgerufen und gibt dann im selben Fenster die Hilfe meines Konsolenprogramms aus. Allerdings bleibt dann noch ein blinkender Cursor stehen und erst nach Drücken der Enter-Taste erscheint wieder der Prompt. Lässt sich das auch noch abstellen, so dass sofort der Prompt kommt ?

Reinhard Kern 17. Nov 2007 13:06

Re: cmd-exe die sich selbst mit Parameter aufruft
 
Zitat:

Zitat von wolle72
Das Verhalten ist jetzt so, dass wenn mein Programm mit einem falschen Parameter gestartet wurde, dann wird der CreateProcess aufgerufen und gibt dann im selben Fenster die Hilfe meines Konsolenprogramms aus. Allerdings bleibt dann noch ein blinkender Cursor stehen und erst nach Drücken der Enter-Taste erscheint wieder der Prompt. Lässt sich das auch noch abstellen, so dass sofort der Prompt kommt ?

Hallo,

weshalb eigentlich der ganze Aufwand? Alle meine Kommandozeilenprogramme arbeiten seit Jahren mit dem Aufbau:

lies Parameter
wenn Params Ok TudasNötige
sonst ZeigeHilfe.

Eine nochmaliger Aufruf ist überflüssig.

In TudasNötige kann auch noch /? abgefragt werden, um die Hilfe mit Absicht anzuzeigen.

Gruss Reinhard

wolle72 17. Nov 2007 19:32

Re: cmd-exe die sich selbst mit Parameter aufruft
 
Hallo Reinhard,

da haste absolut recht, das ist wohl das Sinnvollste. Warum kompliziert, wenn's auch einfach geht :wall:

Aber prinzipiell würde mich es trotzdem interessieren wie's geht, wär aber nimmer gar so wichtig.

Danke und viele Grüssle
Wolle


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz