Entwickler-Ecke

Windows API - DOS Box überwachen


ber019 - Mo 07.06.04 09:55
Titel: DOS Box überwachen
hallo!

ich habe folgendes Problem: wir haben eine Fremd Applikation in einer DOS Box laufen. Es kann sein dass hier ein Bug aufkommt und der Prozess einfach nicht mehr weiterarbeitet, er ist jedoch noch in der Taskleiste vorhanden.

Kann ich irgendwie das Ergebnis in der DOS Box abfragen oder darin was suchen, abfragen ob sich etwas geändert hat bzw. den Inhalt des Fensters in eine Datei kopieren?

DANKE !!!!!

michi


MrCoder - Mo 07.06.04 20:30
Titel: Eine Idee
Hi,
ich denke ich versteh nicht ganz was du meinst... :wink:
aber soviel hab ich verstanden: du willst die DOS Box überwachen!
Also hilft dir vielleicht folgendes: Ab Win NT/2000/XP kann man von der
DOS Box einen HWND-Handle erhalten (Suche im MSDN GETCONSOLEWINDOW). Mit dem kannst du z.B. Screenshots
machen. Aber ich weiß nicht, ob du das meinst...

MfG,
Mr. Coder


ber019 - Di 08.06.04 08:26

hmmm, im Prinzip reicht mir wenn ich den Inhalt der DOS Box kopiere und in eine Datei ablege. Dann kann ich schon etwas damit anfangen- nach Fehlern auswerten. Nur wie bekomme ich den Inhalt in eine Datei? Den Prozess starte ich nicht mit einem Delphi Programm- also müßte ich mir den Prozess erst suchen und dann könnte ich mit dem HWND-Handle etwas ähnliches machen?

danke für deine hilfe!

lg michi


iGoA - Di 08.06.04 10:16

Man kann mit > die Ausgabe in eine Datei oder einen Drucker umleiten.

Beispiel:
Zitat:
DIR > TEST.TXT


gibt nicht den Verzeichnisinhalt aus, sondern erzeugt eine Datei namens TEST.TXT, wo dieser drinsteht. Ich bin nur nicht ganz sicher, ob das mit Deinem Proggi auch geht, aber wenn, dann ist das wohl die EINFACHSTE Methode.


matze - Di 08.06.04 11:46

evtl hilft dir diese kompo: http://maxxdelphisite.free.fr/doscmd.htm


ber019 - Di 08.06.04 12:29

hallo!

nein leider mit der PIPE hätte ich es schon probiert, das File bleibt leider leer und der Prozess funktioniert dann nicht richtig

Danke trotzdem!

lg Michi


matze - Di 08.06.04 23:53

ähm, bei der kompo bekommste aber neue zeilen in einer dos app als events mit und wenn die app längere zeit nix tut, wird sie abgeschossen (ich denke mal, dass bekommt man auch mit).
also im prinzip doch das was du willst !?


ber019 - Mi 09.06.04 08:09

ja würde passen- jetzt muss ich schaun dass ich die unit in ein kleines programm anbinde! da mach ich noch was falsch da ich immer eine exception bekomme: EAccessVialoation



Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var F_DosCommand: TDosCommand;
    F_diskName : String;
begin
  F_DosCommand.CommandLine := 'c:\mydir.bat c:\windows\*.txt';
  F_DosCommand.Execute;
end;


danke und lg
michi


matze - Mi 09.06.04 11:25

du hast auch noch ein objekt von TDosCommand erstellt !