console ausgabe in input feld umleiten

  • Hi Leutz,

    von der Sache her ganz einfach: ein ping cmd oder ein anderes Programm in eine Input Box in einer Gui umleiten.
    Ist soweit auch fertig, aber es flackert.
    es gab ein Beispiel von Autoit direkt, aber ich finde es nicht mehr.
    Die GUI laeuft im OnEventMode, kann es darum so flackern?

    Hier mal das Script:

    [autoit][/autoit][autoit][/autoit][autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #Include <Date.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; ##### Gui Control ##################################################################

    [/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate("Inputfiels",800, 600) ; Macht eine GUI mit 800x600
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $output = GUICtrlCreateInput( "", 50, 100, 500, 400)

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; ##### Programm Ablauf #############################################################################




    While 1

    ; Path exist in InputField Funktion?
    $hPID = Run( "ping heise.de","",@SW_HIDE,6)
    While ProcessExists($hPID)
    GuiCtrlSEtDAta($output,STDOutread($hPID,1) )
    Wend

    Sleep(100)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    WEnd


    ; ##### Funktionen #######################################

    ; ##### GUI Funktionen ###################################

    Func AForm1Close()
    ;MsgBox( 4 , "Beenden", "Möchten Sie wirklich abbrechen?")
    ;If True Then
    Exit
    ;EndIf

    EndFunc


    Func AForm1Maximize()

    EndFunc


    Func AForm1Minimize()

    EndFunc


    Func AForm1Restore()

    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]


    Danke

    CAT

    • Offizieller Beitrag

    Nur dann die Daten neu schreiben, wenn sich auch etwas verändert hat:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <Date.au3>
    Opt("GUIOnEventMode", 1) ; OnEvent-Mode einschalten

    [/autoit] [autoit][/autoit] [autoit]

    ; ##### Gui Control ##################################################################

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Inputfiels", 800, 600) ; Macht eine GUI mit 800x600
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $output = GUICtrlCreateInput("", 50, 100, 500, 400)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; ##### Programm Ablauf #############################################################################

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $oldData = ""

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    ; Path exist in InputField Funktion?
    $hPID = Run("ping heise.de", "", @SW_HIDE, 6)
    While ProcessExists($hPID)
    $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($output, $readData)
    $oldData = $readData
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(100)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; ##### Funktionen #######################################

    [/autoit] [autoit][/autoit] [autoit]

    ; ##### GUI Funktionen ###################################

    [/autoit] [autoit][/autoit] [autoit]

    Func AForm1Close()
    ;MsgBox( 4 , "Beenden", "Möchten Sie wirklich abbrechen?")
    ;If True Then
    Exit
    ;EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Close

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func AForm1Maximize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Maximize

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func AForm1Minimize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Minimize

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func AForm1Restore()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Restore

    [/autoit]
  • Danke.

    ok das habe ich sogar gerafft,

    nun muss nur noch bei neuen Daten eine neue Zeile kommen.
    Geht das denn mit @CRLF?


    CAT

    • Offizieller Beitrag

    Das geht so:

    Spoiler anzeigen
    [autoit]


    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <Date.au3>
    Opt("GUIOnEventMode", 1) ; OnEvent-Mode einschalten

    [/autoit] [autoit][/autoit] [autoit]

    ; ##### Gui Control ##################################################################

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Inputfiels", 800, 600) ; Macht eine GUI mit 800x600
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $output = GUICtrlCreateEdit("", 50, 100, 500, 400, BitOr($GUI_SS_DEFAULT_EDIT,$ES_MULTILINE))

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; ##### Programm Ablauf #############################################################################

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $oldData = ""

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    ; Path exist in InputField Funktion?
    $hPID = Run("ping heise.de", "", @SW_HIDE, 6)
    While ProcessExists($hPID)
    $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($output, GUICtrlRead($output) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(100)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; ##### Funktionen #######################################

    [/autoit] [autoit][/autoit] [autoit]

    ; ##### GUI Funktionen ###################################

    [/autoit] [autoit][/autoit] [autoit]

    Func AForm1Close()
    ;MsgBox( 4 , "Beenden", "Möchten Sie wirklich abbrechen?")
    ;If True Then
    Exit
    ;EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Close

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func AForm1Maximize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Maximize

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func AForm1Minimize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Minimize

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func AForm1Restore()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>AForm1Restore

    [/autoit]
  • Habe mir das ein bisschen umgebaut, funtioniert aber auf jeden Fall.

    Vielen Danke.

    [autoit]

    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <Date.au3>
    Opt("GUIOnEventMode", 1) ; OnEvent-Mode einschalten

    [/autoit][autoit][/autoit][autoit]

    ; ##### Gui Control ##################################################################

    [/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate("Inputfiels", 800, 600) ; Macht eine GUI mit 800x600
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $output = GUICtrlCreateEdit("", 50, 100, 500, 400, BitOr($GUI_SS_DEFAULT_EDIT,$ES_MULTILINE))

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; ##### Programm Ablauf #############################################################################

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $oldData = ""

    [/autoit][autoit][/autoit][autoit]

    While 1

    [/autoit][autoit][/autoit][autoit]

    ; Path exist in InputField Funktion?
    $hPID = Run("ping heise.de", "", @SW_HIDE, 6)
    While ProcessExists($hPID)
    $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($output, $output & @CRLF & $readData)
    $oldData = $readData
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Sleep(10000)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; ##### Funktionen #######################################

    [/autoit][autoit][/autoit][autoit]

    ; ##### GUI Funktionen ###################################

    [/autoit][autoit][/autoit][autoit]

    Func AForm1Close()
    ;MsgBox( 4 , "Beenden", "Möchten Sie wirklich abbrechen?")
    ;If True Then
    Exit
    ;EndIf

    [/autoit][autoit][/autoit][autoit]

    EndFunc ;==>AForm1Close

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func AForm1Maximize()

    [/autoit][autoit][/autoit][autoit]

    EndFunc ;==>AForm1Maximize

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func AForm1Minimize()

    [/autoit][autoit][/autoit][autoit]

    EndFunc ;==>AForm1Minimize

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Bei allen input und edit feldern scrollt die Ausgabe leider nicht zu den aktuellen Daten, sondern bleibt in der ersten Zeile stehen.
    Mit welchem Ex-style kann ich das denn einstellen? Habe das nicht verstanden in der Hilfe, autoscrollv geht nicht.


    Danke


    CAT

  • Ich habe nun endlich die Loesung gefunden!!! :o)

    Die Funktion heisst: _GUICtrlEdit_Scroll
    und braucht unbedingt: #Include <GuiEdit.au3>
    #include <ScrollBarConstants.au3>


    Schon irgendwie bloed, dass GuiCTRLEdit das nicht von allein kann...


    CAT

    Einmal editiert, zuletzt von cat1510 (18. September 2008 um 22:14)