Jump to content
Sign in to follow this  
4ggr35510n

[SIMPLE] Working Example Of WM_MOUSELEAVE

Recommended Posts

4ggr35510n

I believe there is none working example of WM_MOUSELEAVE notification ( I could be wrong ), using TrackMouseEvent, on this Forum.

I've had some serious trouble some time to make it work.

I believe someone will use it one day :]

Global $is_tracking = False
Global $iteration = 1 ; Just to recognize different ConsoleWrite's in spammed console

Global $hGui = GUICreate('')

Global $sTrackMouseEvent = DllStructCreate('dword;dword;hwnd;dword')  ; Creating TRACKMOUSEEVENT Structure
Global $sTME_size = DllStructGetSize($sTrackMouseEvent)               ; getting size of structure - need for 1st argument

; Filling in: 
DllStructSetData($sTrackMouseEvent, 1, $sTME_size)      ; Size of a structure
DllStructSetData($sTrackMouseEvent, 2, 0x00000002)      ; TME_LEAVE
DllStructSetData($sTrackMouseEvent, 3, $hGui)           ; HWND of our GUI
DllStructSetData($sTrackMouseEvent, 4, 0xFFFFFFFF)  ; HOVER_DEFAULT - BUT IT'S NOT USED ANYWAY, SINCE WE'RE TRACKING ONLY MOUSE_LEAVE EVENT

Global $sTME_POINTER = DllStructGetPtr($sTrackMouseEvent) ; Getting the pointer to the structure, needed to TrackMouseEvent function


GUIRegisterMsg(0x0200, '__wm_mousemove')
GUIRegisterMsg(0x02A3, '__wm_mouseleave') ; WM_MOUSELEAVE code
GUISetState()

Func __wm_mouseleave($hwnd, $msg, $wParam, $lParam)
    $is_tracking = False
    ConsoleWrite('YOUR MOUSE HAS JUST LEAVED YOUR GUI WINDOW FOR THE ' & $iteration & ' TIME!' & @CRLF)
    $iteration += 1
EndFunc

Func __wm_mousemove($hwnd, $msg, $wParam, $lParam)
    If Not $is_tracking Then
        $is_tracking = True
        DllCall('user32.dll', 'bool', 'TrackMouseEvent', 'ptr', $sTME_POINTER) ; We're calling the tracking function
        ConsoleWrite('Starting tracking...' & @CRLF)
    EndIF
EndFunc

Do
Until GuiGetMsg() = -3

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
Sign in to follow this  

×

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.