AdLibEnable("") - Problem beim COmpilen

  • Hi ich versuche meinen script zu beenden... Mit adlibEnable...

    Ich habe

    [autoit]

    Func _exit_check()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    EndFunc

    [/autoit]


    Als neue funktion eingebaut und dann einfach in die while schleife vom gui

    [autoit]

    AdlibEnable ( '_exit_check',10 )

    [/autoit]

    geschrieben...

    Dann habe ich noch

    [autoit]

    Case $end
    Exit

    [/autoit]


    eingeführt in den ganz oben genannten code
    Aber dann kommt bei COmpilen der Error ERROR: _exit_check: undefined function.


    Hier der ganze code

    [autoit]

    Func _exit_check()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $end ;Variable von einem Beenden Button
    Exit

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

    EndSwitch
    EndFunc

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


    [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 266, 153, 193, 125)
    $Button1 = GUICtrlCreateButton("Button1", 35, 65, 101, 31, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    AdlibEnable ( '_exit_check',10 )
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE

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

    Exit

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

    Case $Go
    _start()

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

    Case $end

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

    exit
    EndSwitch
    WEnd

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

    Func _exit_check()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $end
    Exit

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

    EndSwitch
    EndFunc

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


    Warum?


    Das einzige Problem ist wie gesagt der Error beim Compilen... Ich hab AdLibEnable("") schon in der WHile schleife (eigentlich sinnlos) außerhalb... Trotzdem Der Error und ich weiß nicht warum...

  • eukalyptus hat recht. Trotzdem mal ein Bsp. zu AdlibEnable (bzw. AdlibRegister).

    Spoiler anzeigen
    [autoit]


    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 366, 153, -1, -1)
    $go = GUICtrlCreateButton("Start", 35, 65, 101, 31, 0)
    $end = GUICtrlCreateButton("End", 185, 65, 101, 31, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3

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

    Exit

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

    Case $Go
    _start()

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

    Case $end

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

    exit
    EndSwitch
    WEnd

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

    Func _exit_check()
    Adlibdisable()
    Exit

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

    EndFunc

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

    func _start()
    MsgBox(1, "", "AdlibEnable gestartet" & @CRLF & "_exit_chec() wird alle 1000 ms aufgerufen")
    AdlibEnable( '_exit_check',1000 )
    endfunc

    [/autoit]
  • Problem ist Folgendes...

    Ich habe 5 Funktionen. Ich Klicke auf den Button (bei mir OpenFIle) und die Funktionen laufen durch. Wenn das Programm einmal am laufen ist kann ich aber nicht mehr das X [X] klicken. Es Reagiert einfach nicht. Genau wie der beenden Button... Wenn die FUnktionen laufen kann ich das programm nur über Taskmanager beenden... anders geht es nicht. Daher hatte ich AdLibEnable(AdLibregister) vor...

  • Benutze am besten OnEvenMode

    [autoit]

    Opt("GuiOnEventMode", 1)

    [/autoit]

    Hier noch das Beispiel aus der Hilfe:

    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
    $mainwindow = GUICreate("Hello World", 200, 100)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
    $okbutton = GUICtrlCreateButton("OK", 70, 50, 60)
    GUICtrlSetOnEvent($okbutton, "OKButton")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000) ; Idle around
    WEnd

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

    Func OKButton()
    ;Note: at this point @GUI_CTRLID would equal $okbutton,
    ;and @GUI_WINHANDLE would equal $mainwindow
    MsgBox(0, "GUI Event", "You pressed OK!")
    EndFunc

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

    Func CLOSEClicked()
    ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
    ;and @GUI_WINHANDLE would equal $mainwindow
    MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
    Exit
    EndFunc

    [/autoit]
  • Hm... Wenn programm gestartet wird kann man die End Funktionen garnicht mehr ansprechen,warum auch immer...


    Gibts nicht irgendwas.. wo alle Funktionen sofort unterbrochen werden?

    • Offizieller Beitrag

    AdlibEnable gibt es auch noch in der Beta.
    Hab hier mal ein Beispiel wie es funktionieren kann.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 266, 153, 193, 125)
    $Button1 = GUICtrlCreateButton("Start", 35, 65, 101, 31, 0)
    $Button2 = GUICtrlCreateButton("Ende", 35, 95, 101, 31, 0)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    AdlibEnable('_exit_check', 10)
    _start()
    Case $Button2
    Exit
    EndSwitch
    WEnd

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

    Func _start()
    For $i = 1 To 10000
    TrayTip("Testfunktion", "Schleifendurchlauf" & $i, 1)
    Sleep(500)
    Next
    EndFunc ;==>_start

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

    Func _exit_check()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    Exit
    EndSwitch
    EndFunc ;==>_exit_check

    [/autoit]

    Dieses Beispiel läuft auf der Stable und der Beta von Autoit.

  • Wenn ich F5 (testen) klicke funktioniert alles... Wenn ich aber COmpile kommt


    C:\test.au3(77,31) : ERROR: AdlibEnable(): undefined function.
    AdlibEnable('_exit_check', 10)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\test.au3 - 1 error(s), 0 warning(s)

    • Offizieller Beitrag

    Horsch mal, das Beispiel läuft.
    Alleine durch deine Fehlermeldung weiß ich, das du nicht das Beispielscript Compiliert hast.
    Stell dein komplettes Script zum testen ein und man kann den Fehler beseitigen.
    Einfach eine Fehlermeldung posten ist weder informativ noch hilfreich.

    Sorry wegen Doppelpost, hab mich verklickt und meinen letzten Beitrag gelöscht.