![]() |
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. |
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. |
Muss das Programm dann nicht auch dafür konfiguriert werden?
Ich meine, es reagiert doch nicht jedes Programm automatisch auf solche DOS-Umleitungen. :? |
das wird doch von Dos direkt umgeleited, das Proggy übergibt ja nur die Ausgabe ans Betriebsystem und dass macht dann damit was es will!
|
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. |
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. |
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) |
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); |
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