![]() |
Wie kann ich eine CMD Applikation in ein Delphi-Prog zwingen
Hallo...
Mir stellt sich folgendes Problem: Ich habe hier eine Applikation für die Windows Kommandozeile (CMD), also vom Aufbau her wie ein DOS-Konsolenprogramm, man tippt seine Befehle halt ein usw. Jetzt hätte ich aber gerne, dass ich dieses Programm mit einem Delphi Programm ansprechen (Befehle schicken) und auslesen kann. Am Besten so, dass nur noch im Delphi Programm drin eine Kommandozeile vorhanden ist, und die eigentliche DOS-Applikation gar nicht mehr im Taskmanager auftaucht... Ich hoffe, ich konnte mich verständlich machen. Das Prinzip ist das selbe wie das des in Delphi programmierten SWI-Prolog Editors ( ![]() Ich hoffe, jemand kann mir da weiterhelfen. Danke schonmal, MfG Otti |
Schau mal nach Winexec oder Creatprocess.
|
Sorry aber das hilft mir nicht wirklich weiter, ich habe nicht so viel Delphi Erfahrung...
|
Also mit Winexec
Code:
Also
winexec(Pchar('command.com /C dir *.*'),0);
Pchar ist ein String nur halt ein bischen anderst aufgebaut command.com ist die Eingabeaufforderung /C ist der Parameter das Command den nachfolgenden Befehl ausführen soll und dann sich selbst beenden und die 0 gibt an ob sichtbat oder nicht (0=nicht sichtbar,1=sichbar) |
Moin Otti,
dann stellt sich mir die Frage: Nur wenig Delphi Erfahrung, oder mit der Programmierung unter Windows im Allgemeinen? In letzterem Falle könnte das was Du vor hast, vielleicht etwas arg kompliziert werden, so als, mehr oder weniger, Einstieg. Falls ersteres (funktionsfähig umgesetzt hab' ich's auch noch nicht, aber mir ist das Grundprinzip bekannt): Ein Konsolenprogramm verwendet, für die Eingabe von Daten StdIn, und für die Ausgabe StdOut und StdError. Im Kontext mit der CMD.EXE hiesse das: StdOut ist die "normale" Ausgabe auf den Bildschirm, die sich mit 1> oder > umleiten lässt, StdError die Ausgabe im Fehlerfalle. Letztere liesse sich mit 2> umleiten. StdIn liesse sich durch Import mit < simulieren, und wäre ansonsten die Eingabe via Tastatur. Das sind Umleitungs- bzw Ein-/Ausgabemöglichkeiten, die im System so vorgesehen sind. Diese müssten jetzt auf eigene Kanäle umgebogen werden. Wird ein Prozess mit CreateProcess gestartet, so ginge dies, indem man in der Struktur STARTUPINFO die Member hStdInput, hStdOutput und hStdError mit entsprechenden Handles versorgt. (Voraussetzung: dwFlags enthält STARTF_USESTDHANDLES, ansonsten würden die angebenen Werte ignoriert werden). Ich schau mal, ob ich noch ein Beispiel dafür finde. |
Hmm also ich will nicht sagen, dass ich absolut Null Ahnung von Delphi hätte (immerhin 2 Jahre Informatik-Leistungskurs), aber ich habe mich noch nie mit solchen Themen beschäftigt.
Es ist übrigens kein DOS-Programm sondern nur eines, das aus der MS-DOS Eingabeaufforderung aufgerufen wird (Overnet Command Line Client -> ![]() Wichtig: Das Konsolenprogramm schliesst sich nicht nach jedem Aufruf sondern muss nach jedem Befehl am Laufen bleiben (ist ja schliesslich ein Fileshare Client)... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 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