Aktualisieren...aber wie?

  • hi ich bins wieder,

    ich sag euch mal worums geht:
    Eine Gui mit Editfeld wird auf guictrlsetdata($Editfeld,FileRead("neu.txt")) gesetzt.
    jetzt soll das feld immer in gleichen abständen aktualisiert werden.
    wenn ich es so mache:

    [autoit]

    While 1
    Sleep(100)
    guictrlsetdata($Editfeld,FileRead("neu.txt"))
    Wend

    [/autoit]


    dann hängt das programm in der while schleife fest und man kann zb keinen button mehr anklicken...

    wie könnte man das besser umsetzen??

    mfg team2way

  • in der hilfe steht nur das

    [autoit]

    AdlibEnable("myadlib")
    ;...
    Exit

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

    Func myadlib()
    If WinActive("Error") Then
    ;...
    EndIf
    EndFunc

    [/autoit]


    wie hilft mir das jetzt weiter, oder besser noch wie kann ich das jetzt einbaun?

  • vielleicht so:

    Spoiler anzeigen
    [autoit]

    AdlibEnable("myadlib", 1000)
    ;...
    Exit

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

    Func myadlib()
    guictrlsetdata($Editfeld,FileRead("neu.txt"))
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Hi,

    so etwa:

    [autoit]


    _myadlib() ;i sofortiger einmaliger Start der Funktion beim Programmstart
    AdlibEnable("_myadlib", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    ;! Beides zusammen in einem Script ist möglich und macht manchmal Sinn

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

    While 1
    Sleep(100)

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

    Wend

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

    Func _myadlib()
    guictrlsetdata($Editfeld,FileRead("neu.txt"))
    EndFunc

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

    ; Ende

    [/autoit]


    Viel Erfolg ! :thumbup:

  • thx noch mal werds testen^^

    edit: das mit dem aktualisieren hat bei mir so nicht funktioniert :S

    Einmal editiert, zuletzt von team2way (2. April 2009 um 19:49)

    • Offizieller Beitrag

    Hm, sollen wir jetzt munter Raten ? Oder lieferst du auch en bischen Code ?

  • Wie sagt man hier im Forum so schön?!

    "Meine allwissende Glaskugel ist gerade defekt"

    Ich find den Spuch einfach zu geil :)

  • hier is er sry konnt nich früher ;)

    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <File.au3>

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

    ;$pfad = IniRead(@ScriptDir & "\data.ini", "www.team2way.de", "Pfad", @ScriptDir)
    Global $log = @ScriptDir & "\log.data"
    $ont = 1
    $pri = 0
    ;FileInstall("qD.bmp", @TempDir & "\qD.bmp", 1)

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    $gui = GUICreate("[cC] " & @UserName, 300, 300, @DesktopWidth - 310, @DesktopHeight - 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    ;GUICtrlCreatePic(@TempDir & "\qD.bmp", 0, 0, 304, 150)
    ;GUICtrlSetState(-1, $GUI_DISABLE)
    $EditText = GUICtrlCreateEdit("", 10, 10, 280, 150, BitOR(64, 2048, 4096, 0x200000))
    ;GUICtrlSetFont(-1, 8, 550, 0, "Verdana")
    GUICtrlCreateGroup("Nachricht:", 10, 170, 280, 100)
    $text = GUICtrlCreateInput("", 20, 195, 260, 25)
    GUICtrlSetOnEvent($text, "_Send")
    GUICtrlCreateButton("Senden", 20, 230, 60, 25)
    GUICtrlSetOnEvent(-1, "_Send")
    GUICtrlCreateButton("Aktualisieren", 90, 230, 80, 25)
    GUICtrlSetOnEvent(-1, "_Re")
    $sZ = GUICtrlCreateCheckbox("Hotkeys:", 190, 245, 65, 20)
    GUICtrlSetTip(-1, "Eine Übersicht aller Hotkeys.", "Hotkeys:", 0, 1)
    GUICtrlSetOnEvent(-1, "_Hotkey")
    GUICtrlCreateLabel("<< https://autoit.de/www.team2way.de >>", 90, 275)
    GUICtrlSetColor(-1, 0xD3D3D3)
    ;GUICtrlCreatePic(@ScriptDir & "\2wb.bmp", 20, 275, 260, 19)
    GUISetState(@SW_SHOW)

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

    While 1
    ;While 1
    If WinActive("[cC] " & @UserName) Then
    HotKeySet("{ENTER}", "_Send")
    HotKeySet("!" & "a", "_Re")
    HotKeySet("!" & "{F4}", "_Ende")
    Else
    HotKeySet("{ENTER}")
    HotKeySet("!" & "a")
    HotKeySet("!" & "{F4}")
    EndIf
    Sleep(10)
    ;WEnd
    ;GUICtrlSetData($EditText, FileRead($log))
    WEnd
    AdlibEnable("_Re", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    Func _Hotkey()
    MsgBox(0, "[cC] Hotkeys", "[F1] About" & @CRLF & "[F2] Lizenz" & @CRLF & "[Enter] Senden" & @CRLF & "[Alt+A] Aktualisieren" & @CRLF & "[Alt+F1] Aktiv/Deaktiv" & @CRLF & "[Alt+F4] Exit", 6)
    EndFunc ;==>_Hotkey

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

    Func _Re()
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    EndFunc ;==>_Re

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

    Func _Send()
    $Ipath2 = GUICtrlRead($text)
    FileWrite($log, @CRLF & @UserName & " >" & @HOUR & ":" & @MIN & " => " & $Ipath2)
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    GUICtrlSetData($text, "")

    EndFunc ;==>_Send

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

    Func _Ende()
    FileWrite($log, @CRLF & "<< " & @UserName & " >" & @HOUR & ":" & @MIN & " ==> Hat den Chat verlassen!")
    ;If FileExists(@TempDir & "\qD.bmp") Then FileDelete(@TempDir & "\qD.bmp")
    Exit
    EndFunc ;==>_Ende

    [/autoit]
  • Hi,
    du musst natürlich die AdlibEnable Funktion VOR die While Schleife setzen.
    Sonst wird es nie aktiviert.

    Wenn du das Flackern reduzieren willst schau dir noch die
    _GUICtrlEdit_BeginUpdate
    und
    _GUICtrlEdit_EndUpdate
    Funktionen an :rolleyes:

  • [autoit]

    Wenn du das Flackern reduzieren willst schau dir noch die
    _GUICtrlEdit_BeginUpdate
    und
    _GUICtrlEdit_EndUpdate

    [/autoit]


    wie soll mir das weiterhelfen ^^

    • Offizieller Beitrag

    Probier mal das, da flackert nichts:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GuiEdit.au3>
    ;$pfad = IniRead(@ScriptDir & "\data.ini", "www.team2way.de", "Pfad", @ScriptDir)
    Global $log = @ScriptDir & "\log.data"
    Global $TEMP = ""
    $pri = 0
    ;FileInstall("qD.bmp", @TempDir & "\qD.bmp", 1)

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    $gui = GUICreate("[cC] " & @UserName, 300, 300, @DesktopWidth - 310, @DesktopHeight - 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    ;GUICtrlCreatePic(@TempDir & "\qD.bmp", 0, 0, 304, 150)
    ;GUICtrlSetState(-1, $GUI_DISABLE)
    $EditText = GUICtrlCreateEdit("", 10, 10, 280, 150, BitOR(64, 2048, 4096, 0x200000))
    ;GUICtrlSetFont(-1, 8, 550, 0, "Verdana")
    GUICtrlCreateGroup("Nachricht:", 10, 170, 280, 100)
    $text = GUICtrlCreateInput("", 20, 195, 260, 25)
    GUICtrlSetOnEvent($text, "_Send")
    GUICtrlCreateButton("Senden", 20, 230, 60, 25)
    GUICtrlSetOnEvent(-1, "_Send")
    GUICtrlCreateButton("Aktualisieren", 90, 230, 80, 25)
    GUICtrlSetOnEvent(-1, "_Re")
    $sZ = GUICtrlCreateCheckbox("Hotkeys:", 190, 245, 65, 20)
    GUICtrlSetTip(-1, "Eine Übersicht aller Hotkeys.", "Hotkeys:", 0, 1)
    GUICtrlSetOnEvent(-1, "_Hotkey")
    GUICtrlCreateLabel("<< https://autoit.de/www.team2way.de >>", 90, 275)
    GUICtrlSetColor(-1, 0xD3D3D3)
    ;GUICtrlCreatePic(@ScriptDir & "\2wb.bmp", 20, 275, 260, 19)
    GUISetState(@SW_SHOW)
    AdlibEnable("_Re", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    While 1
    ;While 1
    If WinActive("[cC] " & @UserName) Then
    HotKeySet("{ENTER}", "_Send")
    HotKeySet("!" & "a", "_Re")
    HotKeySet("!" & "{F4}", "_Ende")
    Else
    HotKeySet("{ENTER}")
    HotKeySet("!" & "a")
    HotKeySet("!" & "{F4}")
    EndIf
    Sleep(10)
    ;WEnd
    ;GUICtrlSetData($EditText, FileRead($log))
    WEnd

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

    Func _Hotkey()
    MsgBox(0, "[cC] Hotkeys", "[F1] About" & @CRLF & "[F2] Lizenz" & @CRLF & "[Enter] Senden" & @CRLF & "[Alt+A] Aktualisieren" & @CRLF & "[Alt+F1] Aktiv/Deaktiv" & @CRLF & "[Alt+F4] Exit", 6)
    EndFunc ;==>_Hotkey

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

    Func _Re()
    $eof = _FileCountLines($log)
    if FileRead($log) <> $temp then
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    $temp = FileRead($log)
    EndIf
    EndFunc ;==>_Re

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

    Func _Send()
    $Ipath2 = GUICtrlRead($text)
    FileWrite($log, @CRLF & @UserName & " >" & @HOUR & ":" & @MIN & " => " & $Ipath2)
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    GUICtrlSetData($text, "")

    EndFunc ;==>_Send

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

    Func _Ende()
    FileWrite($log, @CRLF & "<< " & @UserName & " >" & @HOUR & ":" & @MIN & " ==> Hat den Chat verlassen!")
    ;If FileExists(@TempDir & "\qD.bmp") Then FileDelete(@TempDir & "\qD.bmp")
    Exit
    EndFunc ;==>_Ende

    [/autoit]
  • ja das hatte ich auch schon ^^

    das problem ist nur noch das die scrollbar nicht mehr nach unten geht...
    (nach dem aktualisieren)

    woran könnte das liegen?

    • Offizieller Beitrag

    Das geht auch :

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GuiEdit.au3>
    #include <ScrollBarConstants.au3>
    ;$pfad = IniRead(@ScriptDir & "\data.ini", "www.team2way.de", "Pfad", @ScriptDir)
    Global $log = @ScriptDir & "\log.data"
    Global $TEMP = ""
    $pri = 0
    ;FileInstall("qD.bmp", @TempDir & "\qD.bmp", 1)

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    $gui = GUICreate("[cC] " & @UserName, 300, 300, @DesktopWidth - 310, @DesktopHeight - 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    ;GUICtrlCreatePic(@TempDir & "\qD.bmp", 0, 0, 304, 150)
    ;GUICtrlSetState(-1, $GUI_DISABLE)
    $EditText = GUICtrlCreateEdit("", 10, 10, 280, 150, BitOR(64, 2048, 4096, 0x200000))
    ;GUICtrlSetFont(-1, 8, 550, 0, "Verdana")
    GUICtrlCreateGroup("Nachricht:", 10, 170, 280, 100)
    $text = GUICtrlCreateInput("", 20, 195, 260, 25)
    GUICtrlSetOnEvent($text, "_Send")
    GUICtrlCreateButton("Senden", 20, 230, 60, 25)
    GUICtrlSetOnEvent(-1, "_Send")
    GUICtrlCreateButton("Aktualisieren", 90, 230, 80, 25)
    GUICtrlSetOnEvent(-1, "_Re")
    $sZ = GUICtrlCreateCheckbox("Hotkeys:", 190, 245, 65, 20)
    GUICtrlSetTip(-1, "Eine Übersicht aller Hotkeys.", "Hotkeys:", 0, 1)
    GUICtrlSetOnEvent(-1, "_Hotkey")
    GUICtrlCreateLabel("<< https://autoit.de/www.team2way.de >>", 90, 275)
    GUICtrlSetColor(-1, 0xD3D3D3)
    ;GUICtrlCreatePic(@ScriptDir & "\2wb.bmp", 20, 275, 260, 19)
    GUISetState(@SW_SHOW)
    AdlibEnable("_Re", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    While 1
    ;While 1
    If WinActive("[cC] " & @UserName) Then
    HotKeySet("{ENTER}", "_Send")
    HotKeySet("!" & "a", "_Re")
    HotKeySet("!" & "{F4}", "_Ende")
    Else
    HotKeySet("{ENTER}")
    HotKeySet("!" & "a")
    HotKeySet("!" & "{F4}")
    EndIf
    Sleep(10)
    ;WEnd
    ;GUICtrlSetData($EditText, FileRead($log))
    WEnd

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

    Func _Hotkey()
    MsgBox(0, "[cC] Hotkeys", "[F1] About" & @CRLF & "[F2] Lizenz" & @CRLF & "[Enter] Senden" & @CRLF & "[Alt+A] Aktualisieren" & @CRLF & "[Alt+F1] Aktiv/Deaktiv" & @CRLF & "[Alt+F4] Exit", 6)
    EndFunc ;==>_Hotkey

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

    Func _Re()
    $eof = _FileCountLines($log)
    if FileRead($log) <> $temp then
    GUICtrlSetData($EditText, FileRead($log))
    _GUICtrlEdit_Scroll($EditText, $SB_SCROLLCARET)
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    $temp = FileRead($log)
    EndIf
    EndFunc ;==>_Re

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

    Func _Send()
    $Ipath2 = GUICtrlRead($text)
    FileWrite($log, @CRLF & @UserName & " >" & @HOUR & ":" & @MIN & " => " & $Ipath2)
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    GUICtrlSetData($text, "")

    EndFunc ;==>_Send

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

    Func _Ende()
    FileWrite($log, @CRLF & "<< " & @UserName & " >" & @HOUR & ":" & @MIN & " ==> Hat den Chat verlassen!")
    ;If FileExists(@TempDir & "\qD.bmp") Then FileDelete(@TempDir & "\qD.bmp")
    Exit
    EndFunc ;==>_Ende

    [/autoit]
  • Hi team2way,

    vielleicht hilft Dir dieses weiter ?

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    GUICreate("My GUI edit", 400, 400, -1, -1)
    $myedit = GUICtrlCreateEdit("" & @CRLF, 10, 20, 380, 350, $ES_AUTOVSCROLL+$WS_VSCROLL)

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

    GUISetState ()

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

    $file = FileOpen("Dateie.txt", 0)
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    While 1
    $msg = GUIGetMsg()

    $chars = FileRead($file)
    If @error = -1 Then ExitLoop
    GUICtrlSetData($myedit, $chars, 1)
    MsgBox(0, "", "Gut so ? ")
    ExitLoop
    Wend

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

    FileClose($file)

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

    ; Ende

    [/autoit]


    Als Beispiel habe ich eine Text-Datei eingelesen.
    Viel Erfolg ! :)

  • nein leider hilft mir das nicht weiter, da der befehl nur für die ganze gui zutrifft.

    Edit es geht doch, nur brauch ich die controlclicks nicht mehr ;)
    thx noch mal...

    [autoit]

    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")

    [/autoit]