Luigi Posted June 27, 2015 Share Posted June 27, 2015 (edited) Hello forum!Found this example at (https://www.autoitscript.com/wiki/Tutorial_GUIRegisterMsg) to work Windows Message Codes.Someone can help me how get the handle's control when you click right mouse button using only Windows Message Codes {without GUIGetCursorInfo)?Left mouse work ok, Right not.Br, Luigi.expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> ; Whichever method we use, we need to declare the dummy control or the flag as a Global variable Global $hLeftClick, $fRightClick = False Global $hGui Global $aLabel[2] $hGui = GUICreate("Click me!") $aLabel[0] = GUICtrlCreateLabel("Labe 1", 10, 10, 80, 20, $SS_SUNKEN) $aLabel[1] = GUICtrlCreateLabel("Labe 2", 10, 40, 80, 20, $SS_SUNKEN) ; Create a dummy control for the handler to action $hLeftClick = GUICtrlCreateDummy() GUISetState(@SW_SHOW, $hGui) ; Register our messages GUIRegisterMsg($WM_LBUTTONUP, "_WM_LBUTTONUP") GUIRegisterMsg($WM_RBUTTONUP, "_WM_RBUTTONUP") GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $hLeftClick ; Our dummy control was actioned so run the required code ConsoleWrite("Click: LEFT CLICK!" & @LF) EndSwitch ; Look for the flag If $fRightClick = True Then ; Run the code ConsoleWrite("Click: RIGHT CLICK!" & @LF) ; Do not forget to reset the flag! $fRightClick = False EndIf WEnd Func _WM_LBUTTONUP($hWnd, $iMsg, $wParam, $lParam) ; Action the dummy control GUICtrlSendToDummy($hLeftClick) EndFunc ;==>_WM_LBUTTONUP Func _WM_RBUTTONUP($hWnd, $iMsg, $wParam, $lParam) ; Set the flag $fRightClick = True EndFunc ;==>_WM_RBUTTONUP Func MY_WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0x0000FFFF) Local $hCtrl = $lParam ConsoleWrite("_WM_RBUTTONUP $nNotifyCode[ " & $nNotifyCode & " ] $nID[ " & $nID & " ] $hCtrl[ " & $hCtrl & " ]" & @LF) If $nID <> 2 And $nNotifyCode = 0 Then ; Check for IDCANCEL - 2 ; Ownerdrawn buttons don't send something by pressing ENTER ; So IDOK - 1 comes up, now check for the control that has the current focus If $nID = 1 Then Local $hFocus = DllCall("user32.dll", "hwnd", "GetFocus") Local $nCtrlID = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $hFocus[0]) ;~ PostButtonClick($hWnd, $nCtrlID[0]) Else ConsoleWrite("MY_WM_COMMAND: GUIHWnd" & @TAB & ":" & $hWnd & @CRLF & _ "MsgID" & @TAB & ":" & $iMsg & @CRLF & _ "wParam" & @TAB & ":" & $wParam & @CRLF & _ "lParam" & @TAB & ":" & $lParam & @CRLF & @CRLF & _ "WM_COMMAND - Infos:" & @CRLF & _ "-----------------------------" & @CRLF & _ "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _ "CtrlID" & @TAB & ":" & $nID & @CRLF & _ "CtrlHWnd" & @TAB & ":" & $hCtrl & @LF) ConsoleWrite("$nID[ " & $nID & " ]" & @LF) EndIf Return 0 ; Only workout clicking on the button EndIf ; Proceed the default AutoIt3 internal message commands. ; You also can complete let the line out. ; !!! But only 'Return' (without any value) will not proceed ; the default AutoIt3-message in the future !!! Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_COMMAND Edited June 27, 2015 by Luigi Visit my repository Link to comment Share on other sites More sharing options...
LarsJ Posted June 27, 2015 Share Posted June 27, 2015 A right click does not fire a $WM_COMMAND event. But it does fire a $WM_CONTEXTMENU event. Just add this code:GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU") ... ... Func WM_CONTEXTMENU($hWnd, $iMsg, $wParam, $lParam) ConsoleWrite( "WM_CONTEXTMENU" & @CRLF ) ConsoleWrite( "$wParam = " & $wParam & @CRLF ) EndFunc Luigi 1 Controls, File Explorer, ROT objects, UI Automation, Windows Message MonitorCompiled code: Accessing AutoIt variables, DotNet.au3 UDF, Using C# and VB codeShell menus: The Context menu, The Favorites menu. Shell related: Control Panel, System Image ListsGraphics related: Rubik's Cube, OpenGL without external libraries, Navigating in an image, Non-rectangular selectionsListView controls: Colors and fonts, Multi-line header, Multi-line items, Checkboxes and icons, Incremental searchListView controls: Virtual ListViews, Editing cells, Data display functions Link to comment Share on other sites More sharing options...
Luigi Posted June 27, 2015 Author Share Posted June 27, 2015 Perfect! Thank you LarsJ! Visit my repository Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now