fosil

OnAutoItExitRegister not working

8 posts in this topic

Hi all,

I'm working on a relatively complex automation program and I need it to call a specific function when it is closed by a user. Ive resorted to "OnAutoItExitRegister" as i believe that's the only option available.

This command works perfectly fine in a small scale test application I wrote, but once implemented in the final program that's much larger and divided over many files in many directories it no longer works. I don't get any error messages.

My question is has anyone encountered an issue where implementation of this command in a large scale program gave them trouble? Does it matter where "OnAutoItExitRegister" is called and where the function is located? Currently they are both places in the main file that runs the whole program but it still doesn't work.

Any help is appreciated

Share this post


Link to post
Share on other sites



@fosil I will tell you that you are going to get minimal assistance without code; unless we can see what you're doing (or at least a reproducer that shows the issue), we're resorting to guessing.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
2 minutes ago, JLogan3o13 said:

@fosil I will tell you that you are going to get minimal assistance without code; unless we can see what you're doing (or at least a reproducer that shows the issue), we're resorting to guessing.

I agree, if you need something specific I can copy that over here but the scale is so huge that I dont know which part would be beneficial

As far as the actual function being called goes its like this :

 

OnAutoItExitRegister("MyTestFunc")

....

Func MyTestFunc()
    MsgBox($MB_SYSTEMMODAL, "Exit Results 1", 'Exit Message from MyTestFunc()')
EndFunc   ;==>MyTestFunc


Where the OnAutoItExitRegister is being called directly after #include at the top of the code, and MyTestFunc is currently the last function in the same file.

Share this post


Link to post
Share on other sites

Which works just fine. If the script is too large, you would need to create a reproducer. I realize it is sometimes daunting when dealing with very large scripts, but just offering; you cannot expect people to troubleshoot when they can't see the code. What you have written thus far works just fine; something else in your code is stomping on calling the function.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites

ok I will try to see if I can reproduce it on a smaller scale. But in the meanwhile I'm wondering if anyone had similar experiences in the past

Share this post


Link to post
Share on other sites

Is you script ending in a controlled manner as this really works as advertised:

#include <MsgBoxConstants.au3>
OnAutoItExitRegister("MyTestFunc")
Sleep(5000)

Func MyTestFunc()
    MsgBox($MB_SYSTEMMODAL, "Exit Results 1", 'Exit Message from MyTestFunc()')
EndFunc   ;==>MyTestFunc

Jos


Visit the SciTE4AutoIt3 Download page for the latest versions        Beta files                                                          Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

#7 ·  Posted

Try move the func MyTestFunc to top ( as high as possible) of the file where you register OnAutoItExitRegister("MyTestFunc ")!

Share this post


Link to post
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

  • Similar Content

    • IamKJ
      By IamKJ
      So I have a lot of different functions in the little program I'm making.  Most of them use the Do statement, such as finding images, clicking buttons, etc.
       
      The question I have is how would I be able to both
      1) Create a hotkey to pause whatever I am doing at the moment.  If I have to put something into every function in the program, I don't mind.
      2) Create a hotkey to exit whatever I am doing and stop all loops or commands and bring back the main GUI?
    • ur
      By ur
      I have created an exit function and registered using OnAutoItExitRegister.But it is not running when I close the app from taskbar or even with normal exit during end.
       
      Below is the part of code and the included files.
      #include <MsgBoxConstants.au3> #include <FileConstants.au3> #include <WinAPIFiles.au3> #include <Date.au3> #include <file.au3> #include <Array.au3> #include <String.au3> OnAutoItExitRegister("Exit_Program") Func Exit_Program() LoggingMainScr("Entered Exit_Program") Local $exitmethod = ["Natural closing", "close by Exit function", "close by clicking on exit of the systray","close by user logoff","close by Windows shutdown"] ExitProgram("Exit with exit code: "& @exitCode & " And because of: " & $exitmethod[@exitmethod],@exitmethod) EndFunc Func ExitProgram($sReason="Exit by user",$sCode=0) LoggingMainScr($sReason) if $sCode <> 0 then LoggingMainScr("stopped before completion") FileDelete(@ScriptDir&"\Machines*.txt") FileDelete(@ScriptDir&"\PsExec.exe") FileDelete(@ScriptDir&"\HyperVMachines.ps1") FileDelete(@ScriptDir&"\VMwareMachines.ps1") EndFunc Func LoggingMainScr($sMessage) LoggingDefault($sMessage,@ScriptDir&"\MainScr_Logging.log") EndFunc Func LoggingDefault($sMessage,$sLogFile=@ScriptDir&"\Logging.log") If $sMessage = "" Then FileWriteLine($sLogFile, "") Else FileWrite($sLogFile,_NowCalc() & " :: " & $sMessage&@CRLF) EndIf EndFunc Any suggestion.
       
    • fopetesl
      By fopetesl
      For some reason my personal notes were omitted when posting.
      Still a Newb it seems! So have attached my slightly modified example.
      If I comment out Exit button references script will not Exit even with windows 'X' button icon.
      If I'm losing GUI/Tab focus I cannot see where is the difference with(out) definition.
      GUI_No_Exit.au3
    • AndreyS
      By AndreyS
      Tell me why when I shut down Windows, OnAutoItExitRegister function is activated twice?
      This is an example of the reference
      #include <MsgBoxConstants.au3> OnAutoItExitRegister("MyTestFunc") OnAutoItExitRegister("MyTestFunc2") Sleep(1000) Func MyTestFunc()     MsgBox($MB_SYSTEMMODAL, "Exit Results 1", 'Exit Message from MyTestFunc()') EndFunc   ;==>MyTestFunc Func MyTestFunc2()     MsgBox($MB_SYSTEMMODAL, "Exit Results 2", 'Exit Message from MyTestFunc()') EndFunc   ;==>MyTestFunc2