CUI + OnAutoItExitRegister

    • Offizieller Beitrag

    Hey,

    Du meinst wahrscheinlich wenn du eine Console via X beendest. Das Problem dabei ist, dass das kein Ersatz für eine Exit Funktion ist, sondern das Script dann gekillt wird (ProcessClose sozusagen).
    Möglichkeit
    a) Du baust dir ne GUI
    b) du gibst dem User eine andere Möglichkeit das Script zu beenden
    c) Du packst ein Script in ein Script, also das erste SCript mit FileInstall einbinden (wird dann als CUI Kompeliert) und das zweite Script wartet bis das erste Script sich beendet hat und führt dann die gewünschten Opterationen aus
    d) Du suchst mal im englischen Forum, ich glaube ich hab mal ein hübscheres Workarround gefunden, finde es aber grade leider nicht wieder.

    Gruß
    Spider

  • Die wird bei mir aufgerufen:

    [autoit]


    #AutoIt3Wrapper_Change2CUI=y
    #AutoIt3Wrapper_UseX64=n
    OnAutoItExitRegister("_Exit")

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

    ConsoleWrite("Hallo World" & @CRLF)
    Sleep(3000)

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

    Func _Exit()
    MsgBox(0, "Ende", "Ende", 10)
    Exit
    EndFunc

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • So kann man es machen:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Change2CUI=y

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

    #OnAutoItStartRegister "__ConsoleExitHandlerRegister"
    Func __ConsoleExitHandlerRegister()
    DllCall("Kernel32.dll", "bool", "SetConsoleCtrlHandler", "ptr", DllCallbackGetPtr(DllCallbackRegister("__ConsoleExitHandler", "bool", "dword")), "bool", 1)
    EndFunc ;==>__ConsoleExitHandlerRegister

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

    Func __ConsoleExitHandler($dwCtrlType)
    MsgBox(0, '', "")
    Exit
    EndFunc ;==>__ConsoleExitHandler

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

    While 1
    Sleep(200)
    ConsoleWrite(@SEC & @CRLF)
    WEnd

    [/autoit]
  • Bei einem normalen beenden wird das aber nicht aufgerufen, also vergiss OnAutoItExitRegister nicht.