Suche ein Skript, das ein kleines Windows Fenster als Log/Status bereitstellt (als Ersatz for STDOUT)

  • Hallo zusammen,

    ich suche etwas vergleichbares für consolewrite für GUI Programme. Das Log-Fenster sollte nicht veränderbar sein und wenn möglich mehrere tausend Zeilen Strings aufnehmen können. Meine Versuche mit guictrllistbox oder ...edit scheiterten entweder an grafik oder performance Problemen.

    Habt Ihr vielleicht einen Tip für mich!

    Danke und viele Grüße

    Klamauck

    Einmal editiert, zuletzt von klamauck (27. Januar 2010 um 22:57)

    • Offizieller Beitrag

    Was ist denn an einem Edit problematisch?

    Beispiel:

    Spoiler anzeigen
    [autoit]


    $hGui = GUICreate('Console', 400, 600)
    $hList = GUICtrlCreateEdit('', 5, 5, 390, 590)
    GUISetState()
    $sString = InetRead('http://www.autoitscript.com/autoit3/docs/history.htm')
    $sString = BinaryToString($sString)
    GUICtrlSetData($hList, $sString)
    Do
    Until GUIGetMsg() = -3

    [/autoit]

    Edit: Achso, das Limit beim Edit. Kann man einfach höher setzen:

    Spoiler anzeigen
    [autoit]


    $hGui = GUICreate('Console', 400, 600)
    $hList = GUICtrlCreateEdit('', 5, 5, 390, 590)
    GUICtrlSetLimit(-1, 2^30)
    GUISetState()
    $sString = InetRead('http://www.autoitscript.com/autoit3/docs/history.htm')
    $sString = BinaryToString($sString)
    For $i = 0 To 99
    GUICtrlSetData($hList, $sString, 1)
    Next
    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Um das Edit unbeschreibbar zu machen empfiehlt sich der Style BitOr($GUI_SS_DEFAULTEDIT, $ES_READONLY).
    Zum Anhägen von Text sollte _GUICtrlEdit_AppendText verwendet werden, da sonst an der Cursorposition eingefügt wird.
    Vorteilhaft wäre außerdem, wenn das Log nach z.B. 1000 Einträgen in eine Datei geschrieben wird und das Fenster wieder geleert wird, damit weniger Speicher verbraucht wird. (Die Eingabeaufforderung löscht auch nach einer bestimmten Zeilenzahl den Buffer, damit er nicht zu groß wird.)