Simpel

[Solved] AdlibRegister fails after 'stop executing' uncompiled script

5 posts in this topic

#1 ·  Posted (edited)

Hi, I wrote a script using 2 GUIs. At some point I AdlibRegister a function to always WinActivate GUI1 if GUI2 is activated.

Most of the time it works perfect. But I have the feeling that nearly always if I stop executing the uncompiled au3 with Strg+Break and restart the script then the AdlibRegister returns 1 but will not run. If I exit the script with Exit everything is fine.

Did I noticed it right? Is there a AdlibRegister issue if script is aborted? Is there a possibility to fix this?

Regards, Conrad

P.S. The script is about 1000 lines, so I think it wouldn't be helpful posting it. And I have no idea how to make it very small but prove the issue.

Edited by Simpel
[Solved]

SciTE = 3.6.2.0/full   AutoIt = 3.3.14.2   AutoItX64 = 0   OS = Win7Pro SP1   OSArch = X64   Language = 0407/german
H:\...\AutoIt3\SciTE   H:\...\AutoIt3   H:\...\AutoIt3\Include   H: = Network Drive

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

Share this post


Link to post
Share on other sites



#2 ·  Posted

35 minutes ago, Simpel said:

Strg+Break

You mean in SciTE?  This will kill the process so don't expect any clean termination of the script.

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

#3 ·  Posted (edited)

#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <WinAPISys.au3>

Global Const $WA_ACTIVE = 1
Global Const $WA_CLICKACTIVE = 2

Global $hMain = GUICreate("Window 1")
Global $hSecond = GUICreate("Window 2")

GUIRegisterMsg($WM_ACTIVATE, WM_ACTIVATE)

GUISetState(@SW_SHOW, $hMain)
GUISetState(@SW_SHOW, $hSecond)


While (True)
    Switch (GUIGetMsg())
        Case $GUI_EVENT_CLOSE
            Exit 0
    EndSwitch
WEnd

Func WM_ACTIVATE($hWnd, $iMsg, $wParam, $lParam)
    Switch (_WinAPI_LoWord($wParam))
        Case $WA_ACTIVE, $WA_CLICKACTIVE
            Switch ($hWnd)
                Case $hSecond
                    ConsoleWrite("[" & @MIN & ":" & @SEC & ":" & @MSEC & "] Second window set to active, changing to main" & @LF)
                    Return _WinAPI_SetActiveWindow($hMain)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_ACTIVATE

Give that a go instead of using AdLibRegister. Just use GUIRegisterMsg($WM_ACTIVATE, "") to turn off the activate function

Edited by InunoTaishou
Changed $WA_INACTIVE to $WA_CLICKACTIVE, had the proper value, just the wrong name
1 person likes this

Share this post


Link to post
Share on other sites

#4 ·  Posted

Hi @InunoTaishou,

your example works perfect. I have to prove whether I can put it into my script without greater problems. I'll give it a try.

Thank you and regards, Conrad


SciTE = 3.6.2.0/full   AutoIt = 3.3.14.2   AutoItX64 = 0   OS = Win7Pro SP1   OSArch = X64   Language = 0407/german
H:\...\AutoIt3\SciTE   H:\...\AutoIt3   H:\...\AutoIt3\Include   H: = Network Drive

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

Share this post


Link to post
Share on other sites

#5 ·  Posted

There was no problem to implement this. Thanks again.


SciTE = 3.6.2.0/full   AutoIt = 3.3.14.2   AutoItX64 = 0   OS = Win7Pro SP1   OSArch = X64   Language = 0407/german
H:\...\AutoIt3\SciTE   H:\...\AutoIt3   H:\...\AutoIt3\Include   H: = Network Drive

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

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