Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi dos debuger starten mit übergabe von werten? (https://www.delphipraxis.net/875-dos-debuger-starten-mit-uebergabe-von-werten.html)

Thurgen 18. Sep 2002 12:18


dos debuger starten mit übergabe von werten?
 
Hi,

ich muss ein kleines Programm schreiben was von Windows aus den DOS befehl "debug.exe" ausführt und danach 2 Zeilen übergibt:

o 70 2E <RETURN>
o 71 FF <RETURN>

debug.exe starten ist mit SHELLEXECUTE kein problem aber ich schaffe es nicht das er die beiden Zeilen mit übergibt.

Christian Seehase 18. Sep 2002 12:27

Moin Thurgen,

schreib' die beiden Zeilen in eine Textdatei (z.B. c:\temp\meinedaten.dbg) und übergib diesen Pfad als Parameter, aber mit < vorweg, also

< c:\temp\meinedaten.dbg


Dadurch wird der Dateiinhalt an das aufgerufene Programm übergeben, sozusagen als Tastendrücke.

Aber Achtung:
> c:\temp\meinedaten.dbg würde den Inhalt der Datei mit der Ausgabe von debug.exe überschreiben!
Also auf die Schreibweise achten.

MathiasSimmack 18. Sep 2002 12:29

Muss das Programm dann nicht auch dafür konfiguriert werden?
Ich meine, es reagiert doch nicht jedes Programm automatisch auf solche DOS-Umleitungen. :?

RomanK 18. Sep 2002 12:39

das wird doch von Dos direkt umgeleited, das Proggy übergibt ja nur die Ausgabe ans Betriebsystem und dass macht dann damit was es will!

MathiasSimmack 18. Sep 2002 12:49

Schau noch mal richtig hin! Wenn der Pfeil

>

so aussieht, dann trifft deine Aussage zu. Aber hier geht´s in die Richtung:

<

Das heißt für mich, dass das Programm zumindest von der Standardeingabe lesen müsste, um mit den Rückmeldungen des Systems was anfangen zu können. Wenn diese Funktionalität bereits automatisch von Delphi zur Verfügung gestellt wird, dann wäre das natürlich schön, und ich hätte wieder was gelernt.

Thurgen 18. Sep 2002 12:55

hm, das klapt so noch nicht.

ShellExecute(0, Nil, PChar('debug.exe'),Pchar('< c:\test.txt'), Pchar('C:\windows\command'),SW_NORMAL);

bekomme ich eine Fehlermeldung und der Prompt kommt ohne das was übergeben wurde und wenn ich das zb. mit edit.com den DOS txt editor mache

ShellExecute(0, Nil, PChar('edit.com'),Pchar('< c:\test.txt'), Pchar('C:\windows\command'),SW_NORMAL);

kommt: Auf folgende Datei war kein Zugriff möglich "c:\windows\command\<"

in der test.txt stehen einfach nur ein paar Buchstaben die ich zum testen gemacht habe.

Christian Seehase 18. Sep 2002 13:00

Moin Mathias,

oder anders gesagt, was auch immer in der Datei steht, wird an das Programm geschickt, als würdest Du es über die Tastatur eingeben.

Umgekehrt geht's genauso, also die Ausgabe in eine Datei umleiten.
Das ist zwar allgemein bekannt, aber nur für die Ausgabe über Standard Out. Schreibt man hingeben eine 2 vor das umleitende > so wird Standard Error umgeleitet. Gleichzeitig geht's nur, wenn es in zwei verschiedene Dateien geht, oder aber in die Datensenke (NUL:)

Beispiel für die vollständige Ausgabeumleitung:

XCOPY c:\autoexec.bat a:\autoexec.bat 1>nul: 2>nul:

hiermit sollte sich jedwede Ausgabe unterdrücken lassen, auch im Fehlerfalle. (Was bei einer eventuellen Rückfrage des Programmes zugegebener Massen unangenehm werden kann, da man ja nichts davon erfährt, dass man noch etwas eingeben muss)

Christian Seehase 18. Sep 2002 13:04

Moin Thurgen,

dann ersetz' mal:

Pchar('< c:\test.txt')

durch

Pchar('"< c:\test.txt"') // " sind doppelte Anführungsstriche, ist schlecht zu lesen

oder probier's mal so:

ShellExecute(0, 'open', PChar('debug.exe'),Pchar('"< c:\test.txt"'), Pchar('C:\windows\command'),SW_NORMAL);

Thurgen 18. Sep 2002 22:52

problem hat sich von selbst gelöst. Ich habe rausgefunden das der debug command auch so funktionirt.

DEBUG -O 70 17 -O 71 17 Q

trotzdem danke für die Hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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