Jump to content

Cancel an Exit Event


Go to solution Solved by JustSomeone,

Recommended Posts

Hi Guys,

 

This is probably a simple question but im bumping my head against a wall currently.

 

I have a script/app that I do not want a use to close by mistake when a certain Task is in progress. As such I created an Exit function and posed a question within the function that asks a user if they are sure they want to exit as the Task is still running.

The problem I have is regardless on wether the user clicks on YES or NO the script still exits when it his the end of the function. Here is a sample of my code.

$oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
OnAutoItExitRegister("ExitDaApp")

$CaptureStatus = True


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

Global $GuiMain = GUICreate("Test", 943, 523, 176, 129)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch

    If $CaptureStatus = True Then
        ReadLogs()
    EndIf
    Sleep(10)
WEnd


;-----------------------------------------------------------------------------
;ExitDaApp - FUNCTION TO
;-----------------------------------------------------------------------------
Func ExitDaApp()
    SplashOff()
    If $CaptureStatus = True Then
        If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
        $iMsgBoxAnswer = MsgBox(262420,"EXIT","Capture currently running, Are you sure you want to exit?")
        If $iMsgBoxAnswer = "6" Then
            Exit
        Else
            Return
        EndIf
    Else
        Exit
    EndIf
EndFunc ;===> ExitDaApp

;-----------------------------------------------------------------------------
;ReadLogs - FUNCTION TO
;-----------------------------------------------------------------------------
Func ReadLogs()

    ;just read through soem log files.

EndFunc ;===> ReadLogs
Link to comment
Share on other sites

  • Solution

Change this

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch

    If $CaptureStatus = True Then
        ReadLogs()
    EndIf
    Sleep(10)
WEnd 

to this

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            ExitDaApp()
    EndSwitch

    If $CaptureStatus = True Then
        ReadLogs()
    EndIf
    Sleep(10)
WEnd

and it will be ok, working for me when changed

Link to comment
Share on other sites

  • Moderators

DemonAngel,

You are checking too late - OnAutoItExit only runs the function once the exit has been initiated and is unstoppable. :(

Run the check as you receive the [X] event so that you can prevent the exit being initiated and then it will work:

Case $GUI_EVENT_CLOSE
            ExitDaApp()
Do not forget to remove the OnAutoItExitRegister line. ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...