Jump to content
Wicked_Caty

GUI behaves strangely

Recommended Posts

Wicked_Caty

A function is started and creates a GUI with two buttons. If either of those are pressed, the function will return a value, which will be used to start another function. However, only one of those two buttons works.

Local $gui = GUICreate("Crypt", 120, 130)
   Local $button0 = GUICtrlCreateButton("Encrypt", 10, 10, 100, 50)
   Local $button1 = GUICtrlCreateButton("Decrypt", 10, 70, 100, 50)
   GUISetState(@SW_SHOW, $gui)

   While 1

      If GUIGetMsg() = $button0 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 1
      ElseIf GUIGetMsg() = $button1 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 2
      ElseIf GUIGetMsg() = $GUI_EVENT_CLOSE Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 0
      EndIf

   WEnd

The If works as expected, but the two ElseIf don't work at all. No matter how hard or how often I hit that $button1 or click that X in the top-right of the GUI.

Maybe I haven't had enough coffee today, who knows, but I'm stuck right now...

Thanks - complete source-code is attached

_Crypt.au3

Edited by Wicked_Caty
Grammar, spelling, formatting

Share this post


Link to post
Share on other sites
InunoTaishou

I'd suggest organizing your code a bit better and probably not jumping multiple functions that are pretty related (Creating a gui for login then trapping the execution in the login function, then a gui for mode and trapping your execution for mode). Anyways, the solution is to store the GUIGetMsg() in a variable or use it as the expression in a switch statement.

 

Edited by InunoTaishou

Share this post


Link to post
Share on other sites
TheSaint

In other words, you are calling GUIGetMsg() too many times in you While.. loop, and your program would be eating up too much memory, and most likely giving you a timing issue. Inserting a Sleep(50) every loop might help too.

Like Inuno said, use a variable, etc.

While 1
    $msg = GUIGetMsg()
      If $msg = $button0 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 1
      ElseIf $msg = $button1 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 2
      ElseIf $msg = $GUI_EVENT_CLOSE Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 0
      EndIf
    ;Sleep(50)
   WEnd

Like he also said though, you would be better off using the traditional Switch method.

Haven't looked at the rest of your code or tried my improvement, but that misuse of memory stood out.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
Wicked_Caty
Quote

I'd suggest organizing your code a bit better and probably not jumping multiple functions that are pretty related (Creating a gui for login then trapping the execution in the login function, then a gui for mode and trapping your execution for mode). Anyways, the solution is to store the GUIGetMsg() in a variable or use it as the expression in a switch statement.

How am I supposed to do that? I don't know the "guildelines" or the "rulebook" :/

Share this post


Link to post
Share on other sites
InunoTaishou

There's no rule book for it, it's just a suggestion. You could do something like this (I didn't do all of it, just the login and crypt gui)

#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
#include <FileConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $frmLogin = 1
Global $inpUsername
Global $inpPassword
Global $btnLogin
Global $btnExit
Global $frmCrypt = 1
Global $btnEncrypt
Global $btnDecrypt
Global Const $user = "Caty"
Global Const $pass = 1234

Main()

Func CreateLoginGUI()
    $frmLogin = GUICreate("Crypt", 220, 110)
    $inpUsername = GUICtrlCreateInput("Username:", 10, 10, 200, 20)
    $inpPassword = GUICtrlCreateInput("Password:", 10, 40, 200, 20)
    $btnLogin = GUICtrlCreateButton("Log in", 10, 70, 95, 30)
    $btnExit = GUICtrlCreateButton("Exit", 115, 70, 95, 30)
    GUISetState(@SW_SHOW, $frmLogin)
EndFunc   ;==>Login

Func CreateCryptGUI()
    $frmCrypt = GUICreate("Crypt", 120, 130)
    $btnEncrypt = GUICtrlCreateButton("Encrypt", 10, 10, 100, 50)
    $btnDecrypt = GUICtrlCreateButton("Decrypt", 10, 70, 100, 50)
    GUISetState(@SW_SHOW, $frmCrypt)
EndFunc   ;==>Mode

Func Encryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Filename", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Text", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Encrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $f = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $text = StringSplit(GUICtrlRead($ctrl1), '', 2)

    Local $len = UBound($text)
    Local $tmp = ""

    FileWrite($f, $len & @CRLF)

    For $i = 0 To $len - 1

        $tmp = ""
        $tmp = AscW($text[$i])
        $tmp = $tmp * 29212
        $tmp = $tmp / 18108
        $tmp = $tmp * 14481
        $tmp = $tmp / 10857
        $tmp = $tmp * 31627
        $tmp = $tmp / 24087
        $tmp = $tmp * 15835
        $tmp = $tmp / 25878
        $tmp = $tmp * 11957
        $tmp = $tmp / 27520
        $tmp = $tmp * 01324

        FileWrite($f, $tmp & @CRLF)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($f)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Encryption

Func Decryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Encrypted", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Decrypted", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Decrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $fin = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $len = Number(FileReadLine($fin, 1))
    Local $tmp0, $tmp1, $tmp2

    For $i = 0 To $len - 1

        $tmp0 = ""
        $tmp1 = ""
        $tmp0 = Dec(Number(FileReadLine($fin, $i + 1)))
        $tmp0 = $tmp0 / 01324
        $tmp0 = $tmp0 * 27520
        $tmp0 = $tmp0 / 11957
        $tmp0 = $tmp0 * 25878
        $tmp0 = $tmp0 / 15835
        $tmp0 = $tmp0 * 24087
        $tmp0 = $tmp0 / 31627
        $tmp0 = $tmp0 * 10857
        $tmp0 = $tmp0 / 14481
        $tmp0 = $tmp0 * 18108
        $tmp0 = $tmp0 / 29212
        $tmp0 = ChrW($tmp0)
        $tmp1 = String($tmp1) + String($tmp0)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($fin)
    Local $fou = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl1), $FO_APPEND)
    FileWrite($fou, $tmp2)
    FileClose($fou)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Decryption

Func Main()
    Local $att = 3
    CreateLoginGUI()

    While (True)
        Local $nMsg = GUIGetMsg(1)
        Switch ($nMsg[1])
            Case $frmLogin
                Switch ($nMsg[0])
                    Case $GUI_EVENT_CLOSE, $btnExit
                        GUIDelete($frmLogin)
                        Exit 0
                    Case $btnLogin
                        If GUICtrlRead($inpUsername) = $user And GUICtrlRead($inpPassword) = $pass Then
                            GUIDelete($frmLogin)
                            CreateCryptGUI()
                        Else
                            If $att = 3 Then
                                GUISetBkColor(0xFF9911, $frmLogin)
                            ElseIf $att = 2 Then
                                GUISetBkColor(0xFF6611, $frmLogin)
                            ElseIf $att = 1 Then
                                GUISetBkColor(0xFF3311, $frmLogin)
                            Else
                                GUIDelete($frmLogin)
                                Exit -1
                            EndIf
                            $att -= 1
                        EndIf
                EndSwitch
            Case $frmCrypt
                Switch ($nMsg[0])
                    case $GUI_EVENT_CLOSE
                        GUIDelete($frmCrypt)
                        Return 0
                    Case $btnEncrypt
                        Encryption()
                    Case $btnDecrypt
                        Decryption()
                EndSwitch
        EndSwitch
    WEnd
EndFunc   ;==>Main

Call a function that creates the corresponding GUI but the execution stays in Main() and using the advanced mode in GUIGetMsg, since we'll be working with multiple GUIs.

If it's too complicated then GUIOnEventMode might be easier.

#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
#include <FileConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Opt("GUIOnEventMode", 1)

Global $frmLogin
Global $inpUsername
Global $inpPassword
Global $btnLogin
Global $btnExit
Global $frmCrypt
Global $btnEncrypt
Global $btnDecrypt
Global Const $user = "Caty"
Global Const $pass = 1234


CreateLoginGUI()

While (True)
    Sleep(100)
WEnd

Func Close()
    If ($frmLogin) Then GUIDelete($frmLogin)
    If ($frmCrypt) Then GUIDelete($frmCrypt)
    Exit 0
EndFunc   ;==>Close

Func btnLogin()
    Local Static $att = 3
    If (GUICtrlRead($inpUsername) = $user And GUICtrlRead($inpPassword) = $pass) Then
        GUIDelete($frmLogin)
        CreateCryptGUI()
    Else
        If $att = 3 Then
            GUISetBkColor(0xFF9911, $frmLogin)
        ElseIf $att = 2 Then
            GUISetBkColor(0xFF6611, $frmLogin)
        ElseIf $att = 1 Then
            GUISetBkColor(0xFF3311, $frmLogin)
        Else
            GUIDelete($frmLogin)
            Exit -1
        EndIf
        $att -= 1
    EndIf
EndFunc   ;==>btnLogin

Func CreateLoginGUI()
    $frmLogin = GUICreate("Crypt", 220, 110)
    $inpUsername = GUICtrlCreateInput("Username:", 10, 10, 200, 20)
    $inpPassword = GUICtrlCreateInput("Password:", 10, 40, 200, 20)
    $btnLogin = GUICtrlCreateButton("Log in", 10, 70, 95, 30)
    $btnExit = GUICtrlCreateButton("Exit", 115, 70, 95, 30)

    GUICtrlSetOnEvent($btnLogin, "btnLogin")
    GUICtrlSetOnEvent($btnExit, "Close")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    GUISetState(@SW_SHOW, $frmLogin)
EndFunc   ;==>CreateLoginGUI

Func CreateCryptGUI()
    $frmCrypt = GUICreate("Crypt", 120, 130)
    $btnEncrypt = GUICtrlCreateButton("Encryption", 10, 10, 100, 50)
    $btnDecrypt = GUICtrlCreateButton("Decryption", 10, 70, 100, 50)

    GUICtrlSetOnEvent($btnEncrypt, "Encryption")
    GUICtrlSetOnEvent($btnDecrypt, "Decryption")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    GUISetState(@SW_SHOW, $frmCrypt)
EndFunc   ;==>CreateCryptGUI

Func Encryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Filename", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Text", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Encrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $f = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $text = StringSplit(GUICtrlRead($ctrl1), '', 2)

    Local $len = UBound($text)
    Local $tmp = ""

    FileWrite($f, $len & @CRLF)

    For $i = 0 To $len - 1

        $tmp = ""
        $tmp = AscW($text[$i])
        $tmp = $tmp * 29212
        $tmp = $tmp / 18108
        $tmp = $tmp * 14481
        $tmp = $tmp / 10857
        $tmp = $tmp * 31627
        $tmp = $tmp / 24087
        $tmp = $tmp * 15835
        $tmp = $tmp / 25878
        $tmp = $tmp * 11957
        $tmp = $tmp / 27520
        $tmp = $tmp * 01324

        FileWrite($f, $tmp & @CRLF)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($f)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Encryption

Func Decryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Encrypted", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Decrypted", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Decrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $fin = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $len = Number(FileReadLine($fin, 1))
    Local $tmp0, $tmp1, $tmp2

    For $i = 0 To $len - 1

        $tmp0 = ""
        $tmp1 = ""
        $tmp0 = Dec(Number(FileReadLine($fin, $i + 1)))
        $tmp0 = $tmp0 / 01324
        $tmp0 = $tmp0 * 27520
        $tmp0 = $tmp0 / 11957
        $tmp0 = $tmp0 * 25878
        $tmp0 = $tmp0 / 15835
        $tmp0 = $tmp0 * 24087
        $tmp0 = $tmp0 / 31627
        $tmp0 = $tmp0 * 10857
        $tmp0 = $tmp0 / 14481
        $tmp0 = $tmp0 * 18108
        $tmp0 = $tmp0 / 29212
        $tmp0 = ChrW($tmp0)
        $tmp1 = String($tmp1) + String($tmp0)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($fin)
    Local $fou = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl1), $FO_APPEND)
    FileWrite($fou, $tmp2)
    FileClose($fou)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Decryption

Main() isn't even needed for this one. We're going to create the login GUI then wait until they click one of the buttons, or close. The corresponding functions for the buttons take care of the sequential order of the script, moving on to the next part.

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

    • kcvinu
      By kcvinu
      Hi all,
      I have a button created with _GUICtrlButton_Create function. I know that this function returns a handle of button instead of an ID. So i have obtain control ID by calling _WinAPI_GetDlgCtrlID function. After that i have tried the GUICtrlSetBkColor function. But it didnt worked. Any suggestions will be appreciated. Thanks in advance. 
      Note : - The window which carries this button is not created with native gui create function. Instead, it is created with CreateWindowEx api function.
    • kcvinu
      By kcvinu
      Hi all,
      I am playing with _GUICtrlButton_Create function. How can i change this button's (or the entire form's) font ?. The in-built GUICtrlSetFont function is not working even when i convert the control handle to control ID with _WinAPI_GetDlgCtrlID ( ) function.  Do i need to use CreateFont api finction and send WM_SETFONT message ? Or is there any other easy and safe ways to do this ?. Thanks in advance.
      Note : This window is created by CreateWindowEx function, not by GUICreate function. 
    • Jake_s
      By Jake_s
      Hi All, 
       
      I am a begginer in auto it. I am trying to build simple gui that will show me if for example notepad.exe process is currently running on the system. I have built something like this, but when I execute it shows me message boxes, but I want the results to show in gui. If you can help me start with this.
       
      Thanks
       
        #include <MsgBoxConstants.au3>
      #include <GUIConstantsEx.au3>

      ActiveProcess()

      Func ActiveProcess()
      GUICreate("Act")
               ProcessExists("wuauclt.exe")

             If ProcessExists("wuauclt.exe") Then
       MsgBox($MB_SYSTEMMODAL, "", "Windows Upates are running")
           Else
       MsgBox($MB_SYSTEMMODAL, "", "Windows Updates are not running")
       EndIf
         ;Notepad

               ProcessExists("notepad.exe")

               If ProcessExists("notepad.exe") Then
      MsgBox($MB_SYSTEMMODAL, "", "Notepad is running")
              Else
      MsgBox($MB_SYSTEMMODAL, "", "Notepad is not running")
      EndIf  
       
    • corz
      By corz
      This is a magnifier-color-picker thing mostly based on some code I found on Stack Overflow, of all places. At least all the clever bits are from there. 
      I'd love to use this code inside an app I'm working on. But it has an issue. The first time the mag pops up it works perfectly, but the second and subsequent times, it's a boring grey square. 
      One of you smart dudes will probably look at this and go, "Aha!", but I'm stumped.
      #include <WindowsConstants.au3> #include <WinAPI.au3> #include <StaticConstants.au3> MagWindow() MagWindow() ; Magnifier-Color-Picker.. ; Props to McBarby for the cross-hairs. func MagWindow() global $iMagZoom = 5 global $iMagWidth = Ceiling(100/$iMagZoom) global $iMagHeight = Ceiling(100/$iMagZoom) global $hDCDesk, $hDCZoom, $hPen global $hUser32 = DllOpen("user32.dll") global $hGDI32 = DllOpen("gdi32.dll") global $pixel_color, $mag_open = false local $mX, $mY global $hCross = GUICreate('', 48, 48, -1, -1, $WS_POPUP, $WS_EX_TOPMOST) WinSetTrans($hCross, '', 0) GUISetCursor(3, 1, $hCross) global $hZoom = GUICreate("MagPicker", $iMagWidth * $iMagZoom, $iMagHeight * $iMagZoom, _ MouseGetPos(0), MouseGetPos(1), $WS_POPUP+$WS_BORDER, $WS_EX_TOPMOST) global $mag_label = GUICtrlCreateLabel("placehold", (($iMagHeight * $iMagZoom)/2)+2, ($iMagHeight * $iMagZoom) - 13, _ (($iMagHeight * $iMagZoom)/2)-3, 12, $SS_RIGHT) ; put this after the GUICreate()s so that it will not error on startup with mouse already moving. (now trapped! but we will leave them here.) global $__hMouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam") global $__hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($__hMouseProc), _WinAPI_GetModuleHandle(0)) GUISetState(@SW_SHOW, $hCross) GUISetState(@SW_SHOW, $hZoom) $mag_open = true ; once at start, then from the mouse-callback-function.. _Magnify() while $mag_open Sleep(50) $mX = MouseGetPos(0) $mY = MouseGetPos(1) $pixel_color = Hex(PixelGetColor($mX, $mY), 6) GUICtrlSetData ($mag_label, $pixel_color) wend GUIDelete($hZoom) GUIDelete($hCross) ReleaseHooks() endfunc func _Magnify($_iX=-1, $_iY=-1) local Static $fInit = true if $fInit then $fInit = False $hDCDesk = (DLLCall($hUser32, "int", "GetDC", "hwnd", 0))[0] $hDCZoom = (DLLCall($hUser32, "int", "GetDC", "hwnd", $hZoom))[0] $hPen = (DLLCall($hGDI32, "int", "CreatePen", "int", 0, "int", 3, "int", 0x008b9094))[0] ; 0=PS_SOLID, dark-blue (0x00BBGGRR) DLLCall($hGDI32, "int", "SelectObject", "int", $hDCZoom, "hwnd", $hPen) $_iX = MouseGetPos(0) $_iY = MouseGetPos(1) endif local $iW = $iMagWidth * $iMagZoom, $iH = $iMagHeight * $iMagZoom if not @error then DLLCall($hGDI32, "int", "StretchBlt", "int", $hDCZoom, "int", _ 0, "int", 0, "int", $iW, "int", $iH, "int", $hDCDesk, "int", _ $_iX - $iMagWidth/2, "int", $_iY - $iMagHeight/2, "int", $iMagWidth ,"int", $iMagHeight, _ "long", $SRCCOPY) ; draw the crosshair (start x, start y, end x, end y) _GDI32_DrawLine($hDCZoom, ($iW/2)-2, $iH/8, ($iW/2)-2, 4*($iH/8)-6, $hGDI32) ; vertical top _GDI32_DrawLine($hDCZoom, ($iW/2)-2, 5*($iH/8)-10, ($iW/2)-2, 7*($iH/8), $hGDI32) ; vertical bottom _GDI32_DrawLine($hDCZoom, $iW/8, ($iH/2)-2, (3*($iW/8))+6, ($iH/2)-2, $hGDI32) ; horizontal left _GDI32_DrawLine($hDCZoom, 4*($iW/8)+3, ($iH/2)-2, 7*($iW/8), ($iH/2)-2, $hGDI32) ; horizontal right endif endfunc func _GDI32_DrawLine(ByRef $_hDC, $_iX0, $i_Y0, $_iX1, $i_Y1, $_hDll=-1) If $_hDll = -1 then $_hDll = "gdi32.dll" Local $tCurrent = DllStructCreate("struct; long X;long Y; endstruct") DllCall($_hDll, "int", "MoveToEx", "int", $_hDC, "int", $_iX0, "int", $i_Y0, "ptr", DllStructGetPtr($tCurrent)) DllCall($_hDll, "int", "LineTo", "int", $_hDC, "int", $_iX1, "int", $i_Y1) return $tCurrent endfunc func _MouseProc($_nCode, $_wParam, $_lParam) local $tMSLLHOOKSTRUCT = DllStructCreate("struct; long X;long Y; endstruct; " & _ "DWORD mouseData; DWORD flags; DWORD time; ULONG_PTR dwExtraInfo;endstruct", $_lParam) if $_nCode < 0 Then Return _WinAPI_CallNextHookEx($__hHook, $_nCode, $_wParam, $_lParam) local $iX = $tMSLLHOOKSTRUCT.X, $iY = $tMSLLHOOKSTRUCT.Y switch $_wParam case $WM_LBUTTONDOWN CloseMag() case $WM_MOUSEMOVE if not $mag_open then return WinMove($hCross, "", $iX -24, $iY -24) Local $iXz = ($iX +24 + $iMagWidth*$iMagZoom > @DesktopWidth) ? $iX -(24 + $iMagWidth*$iMagZoom) : $iX +24 Local $iYz = ($iY +24 + $iMagHeight*$iMagZoom > @DesktopHeight) ? $iY -(24 + $iMagHeight*$iMagZoom) : $iY +24 WinMove($hZoom, "", $iXz + $iMagWidth/2, $iYz) _Magnify($iX, $iY) endswitch return _WinAPI_CallNextHookEx($__hHook, $_nCode, $_wParam, $_lParam) endfunc func ReleaseHooks() DLLCall($hUser32, "int", "ReleaseDC", "int", $hDCZoom, "hwnd", $hPen) DLLCall($hUser32, "int", "ReleaseDC", "int", $hDCDesk, "hwnd", 0) DLLCall($hUser32, "int", "ReleaseDC", "int", $hDCZoom, "hwnd", 0) DllClose($hUser32) DllClose($hGDI32) _WinAPI_UnhookWindowsHookEx($__hHook) DllCallbackFree($__hMouseProc) endfunc func CloseMag() ; called by mouse left click $mag_open = false endfunc  
      Thanks for any and all insights!
      ;o) Cor
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.