Entwickler-Ecke

Dateizugriff - Dosproggy starten - neues


Andysaw - Di 03.12.02 21:51
Titel: Dosproggy starten - neues
hi,

Für alle die es nicht mehr wissen: Ich habe ein Dosproggy und mein Delphi proggy. Das Dosp überschreibt regelmässig eine Datei mit daten. Zwischen den Schreibvorgängen muss mein Delphi lesen.(in der Dat)

(Das alles jetzt geklärt,ich kopier die dat ...)

Aber wenn ich über delphi das doproggy starte (ja , auch die früher angesprochene parameterübergabe funktioniert) beendet es sich (oder delphi ) sofort wieder , ohne Fehler angabe. Ich möchte es aber unbedingt über delphi starten.

zum dosp:
es ist nicht änderbar ich muss eine eingabe simulieren in form :

Quelltext
1:
echo | m1 dosproggy.exe                    

m1 wäre dann meine parameterdatei
also er fragt : gib mir datei !
ich sage : m1 [ENTER]
und dann gehts los...

Wenn mir einer helfen könnte wär es echt super...

MfG
Andy

(04.12. 08:54 Tino) Titel geändert.


Delete - Mi 04.12.02 04:08

Wie wäre es mit Shellexecute?


Andysaw - Mi 04.12.02 15:02

hi,

ja ich arbeite mit shellexecute. aber ich muss ja die eingabe simulieren (keine parameterübergabe) als ob ich "m1" eingebe und enter drücke.
dafür hab ich mir nun eine start.bat geschrieben mit dem code von oben. wenn ich unter der eingabeauforderung die bat starte funkst alles top. starte ich mit shellexecute mit delphi beendet es sich oder delphi beendet es(keine ahnung).

ok, jetzt müssten alle infos da sein..

Ich bitte um Hilfe.

MfG
Andy


Delete - Mi 04.12.02 17:46

Wenn du die Batch-Datei mit deinem Delphi-Programm startest, dann geht es nicht? Kann ich gar nicht glaubern.


Andysaw - Mo 09.12.02 19:26

doch leider is das so.... das proggy beendet sich gleich wieder.. Aber ich bekomm wohl ne methode dafür... hab ein neues prob (hoffentlich das letzte) ich mach nen thread auf..

MfG
Andy


tommie-lie - Mo 09.12.02 21:20

hmmm, Batchdateien sind ja eigentlich keine Programme.
Ich rate jetzt einfach mal ins Blaue: Probier mal mit Shellexecute command.com (unter Win9x, das XP-Äquivalent kenn' ich nicht) aufzurufen, mit deiner Batch-Datei als ersten Parameter. Vielleicht klappt's dann. Wenn nicht, weiß ich auch nicht weiter. Ich such mal auf meiner DOS-Partition nach einem Interpreter für solche Sachen, der resistent geladen wird, aber probier's erstmal mit der command.com aus...


Delete - Mo 09.12.02 21:25

Wenn du die Batch-Datei als zu öffnendes Programm bei Shellexecute angibst, sollte eigentlich der entsprechende Komamandointerpreter gestartet werden. Also unter Win9x command.com und unter NT basierenden System cmd.exe.


tommie-lie - Di 10.12.02 17:37

eigentlich schon.
Daher finde ich das Verhalten auch etwas seltsam. Aber einen Versuch wäre es doch wert, oder?


Andysaw - Di 10.12.02 17:39

Hi,

also wenn ich die BatchDatei als zu startendes Program unter Shellexecute angebe wird das DosProgramm gleich nach dem start beendet. Ich habe es mit command.com in shellexecute probiert....nix! Also er startet command.com soweit alles toll aber ich kann die *.bat nicht starten , nur die original *.exe und da muss ich wieder meine eingabe tätigen und mit enter bestätigen. Ich muss das doch irgendwie schaffen ...

Ich hoffe ihr habt Vorschläge

MfG
Andy


S - tefano - Do 12.12.02 21:17

Hi,

hm, weiß jetz nich ob ich das Problem jetz richtig verstanden habe, aber wenns darum geht dass dein Batchfile direkt nach dem Start beendet wird was vermutlich daran liegt, dass du den Parameter nich übergeben kannst,
dann muss man sich nen anderen Weg ausdenken dem Batchfile zu sagen was es machen soll.
Da würd ich dann z.B. diesen Weg gehen:
Anstatt dem Dosprog per Parameter zu sagen, was es machen soll, könntest du doch alle benötigten Infos für dein Dosprog in ne (beispielsweise) Textdatei schreiben - und dann dein Dosprog so umschreiben, dass es nach Parametern nich mehr über paramstr sucht, sondern sie sich aus der dafür angelegten Datei rauslädt (wenn sowas bei Batchfiles geht, kenn mich damit nich aus).
Vielleicht klappts dann, vielleicht auch nich... wie gesagt, kenn mich mit Batchfiles nich aus.

Bis dann,

S - tefano


S - tefano - Do 12.12.02 21:19

Oh, wo ich grad nochmal gründlich nachles fällt mir auf dass ich den Zusammenhang nich gesehen hab.
Naja, aber der Weg über die Datei ist doch trotzdem noch nen Versuch wert, oder?


Andysaw - Do 12.12.02 21:30

hi,
Ja sorry ich hab wieder vergessen zu sagen dass das dosproggy nich änderbar ist....

MfG
Andy


S - tefano - Do 12.12.02 21:46

Ahso...
hm...
Und wenn du per Shellexecute ein neuen Eingabeaufforderungsfenster öffnest, und dann vortäuschst, du hättest ganz normal alles eingegeben?
Ich glaub, mit keybd_event kann man sowas machen.
Da könnte man dann einfach nacheinander alle zu drückenden Tasten systemweit "broadcasten".
Ok, isn bissken - naja - improvisiert, rustikal etc. aber könnte klappen.
Ich hab dazu mal n Programm geschrieben, aber die Sources sind or n paar Monaten einem sehr dummen Fehler meinerseits zum Opfer gefallen.
Am besten suchst du - sofern dir diese Methode gefällt - in der Delphi Hilfe nach keybd_event und nach VirtualKeys (ne Liste der Werte, die die einzelnen Tasten vertreten).

Bis denn,

S - tefano


vandy59 - Mo 16.12.02 11:47
Titel: Vielleicht so ?
"dosproggy < eingabe.txt"
Habe ich vor einige jahren gebraucht beim starten eines dos programm.
Dir eingabe war in den form:

text
-enter-
-enter-
-enter-
text


Succes


Andysaw - Mo 16.12.02 23:46

hi,
also das letzte hab ich noch nicht ausprobiert,aber versteh es auch nicht ganz.....

dosproggy < eingabe.txt wohin damit ?
eingabeaufforderung?ins shellexecute?
sonstwohin?und wohin dort?

text
-enter-
text

wohin soll das ?
in die eingabe.txt ?
also steht bei mir nur "m1" drin?


Bitte etwas ausführlicher...(und vielen Dank für den neuen Vorschlag)

MfG
Andy


JeanvanHees - Di 17.12.02 09:48

:wink2: Morgen,

Du solltest einen ShellExecute procedur haben mit einen Wait.
Es kann nämlich sein das das programm einfach weitergeht und dan zu ende läuft und das doscommando noch nicht ist ausgeführt.
Es muß hier im forum noch irgendwo einigen alten threads geben wo so eine procedur drinsteht.
Wenn du es nicht findest laß es mir wissen...ich hab vielleicht noch irgendwo so etwas, aber dann muß ich schon suchen :|