Die eher mittelmäßige Ausgabe von Konsolenprogrammen nervt mich schon gewaltig..
Nehmen wir z.B.: das NetStat.Exe-Programm zur Anzeige offener Ports
Es ist ein Leichtes, eine DosBox zu öffnen, NetStat -ano einzugeben und das
Ergebnis zu prüfen. Danach wieder DosBox schließen, damit der häßliche
schwarze Fleck den (t)ollen Desktop nicht verschandelt. Es geht auch
anders: NetStat aufrufen und Ausgabe umleiten und dann per AutoIt ausgeben..
Leider muß die Ausgabe jetzt aber neu formatiert werden, also anders..
Dafür gibt es das InternetExplorer.Application-Objekt.
Ich habe die Ausgabe in eine Function gepackt, damit sie auch in anderen Skripts
einfach zur Verfügung steht.
Spoiler anzeigen
#include <Constants.au3>
;(c) 2006 by ytwinky, MD
;und ganz ohne ..matic
_IEPrt(_NetStat("ano"), "NetStat.Exe /ano")
Func _IEPrt($Was, $Titel, $Breite=660, $Hoehe=300, $Links=100, $Oben=100)
Dim $IE=ObjCreate("InternetExplorer.Application.1")
With $IE
.Navigate("about:blank")
.Document.Title=$Titel
.Left=$Links
.Top=$Oben
.Width=$Breite
.Height=$Hoehe
.Visible=1
.Document.Body.InnerHtml="Bitte warten.."
.Toolbar=False
.Menubar=False
.Statusbar=False
.Visible=True
.Document.Body.InnerHtml=$Was
EndWith
EndFunc
Func _NetStat($Options) ;NetStat ausführen
Local $ForWriting=1, $h, $i, $Prt
$i=Run(@ComSpec &" /c netstat.Exe /" &$Options, @SystemDir, @SW_HIDE, $STDOUT_CHILD+$STDERR_CHILD)
Sleep(1000)
$h = StdOutRead($i)
If @error=0 Then $Prt=$h
$h = StdErrRead($i)
If @error=0 Then $Prt = $h
$Prt = StringReplace($Prt, Chr(154), "Ü")
$Prt = StringReplace($Prt, Chr(129), "ü")
$Prt = StringReplace($Prt, Chr(142), "Ä")
$Prt = StringReplace($Prt, Chr(132), "ä")
$Prt = StringReplace($Prt, Chr(153), "Ö")
$Prt = StringReplace($Prt, Chr(148), "ö")
Return "<body scroll=0><Pre>" &$Prt
EndFunc
Alles anzeigen
Wichtig ist nur, daß der übergebene String im Html-Format übergeben wird.
Der Eingeweihte sieht sofort, das Titel, Größe, Position beim Aufruf übergeben
werden KÖNNEN.
[Edit]
Dies ist eine verbesserte Version
Happy protocolling
ytwinky