IKilledBambi Posted January 30, 2009 Posted January 30, 2009 Search yielded about 6-7 results and most of them were _ispressed but I'm not trying to see when I'm pressing it, I'm trying to press it, has a solution to MouseClick("Mouse4") ever been found?
KaFu Posted January 31, 2009 Posted January 31, 2009 MouseClick ( "button" [, x, y [, clicks [, speed ]]] ) button = The button to click: "left", "right", "middle", "main", "menu", "primary", "secondary". Which one is the forth? OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
PsaltyDS Posted January 31, 2009 Posted January 31, 2009 MouseClick ( "button" [, x, y [, clicks [, speed ]]] ) button = The button to click: "left", "right", "middle", "main", "menu", "primary", "secondary". Which one is the forth? I think Mouse4 and Mouse5 are thumb buttons on the left side (of a right-handed) mouse. Perhaps they map to X1 and X2 which can be detected with _IsPressed() using "05" or "06", but don't have usable names in MouseClick(). Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
KaFu Posted January 31, 2009 Posted January 31, 2009 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Local $hGUI, $GUIMsg $hGUI = GUICreate("4th Mouth Button", 300, 200) Global Const $WM_XBUTTONDOWN = 0x020B GUIRegisterMsg($WM_XBUTTONDOWN, "MY_WM_XBUTTONDOWN") GUISetState() While 1 $GUIMsg = GUIGetMsg() Switch $GUIMsg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Func MY_WM_XBUTTONDOWN($hWnd, $Msg, $wParam, $lParam) $nNotifyCode = BitShift($wParam, 16) $nID = BitAND($wParam, 0x0000FFFF) $hCtrl = $lParam ConsoleWrite($nNotifyCode & @TAB & $nID & @TAB & $hCtrl & @CRLF) Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_XBUTTONDOWN Shows activity in console at least for my 4th mouse button... OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
PsaltyDS Posted January 31, 2009 Posted January 31, 2009 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Local $hGUI, $GUIMsg $hGUI = GUICreate("4th Mouth Button", 300, 200) Global Const $WM_XBUTTONDOWN = 0x020B GUIRegisterMsg($WM_XBUTTONDOWN, "MY_WM_XBUTTONDOWN") GUISetState() While 1 $GUIMsg = GUIGetMsg() Switch $GUIMsg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Func MY_WM_XBUTTONDOWN($hWnd, $Msg, $wParam, $lParam) $nNotifyCode = BitShift($wParam, 16) $nID = BitAND($wParam, 0x0000FFFF) $hCtrl = $lParam ConsoleWrite($nNotifyCode & @TAB & $nID & @TAB & $hCtrl & @CRLF) Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_XBUTTONDOWN Shows activity in console at least for my 4th mouse button... Well, yes, but I thought he wants to automate clicking that button, not detecting when it is clicked (which _IsPressed() can do already). Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
KaFu Posted January 31, 2009 Posted January 31, 2009 Read ... think (missed that part here!)... post... next time ... OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
Malkey Posted February 1, 2009 Posted February 1, 2009 Search yielded about 6-7 results and most of them were _ispressed but I'm not trying to see when I'm pressing it, I'm trying to press it, has a solution to MouseClick("Mouse4") ever been found?Thanks to KaFu's example, I noticed the return values in the $wParam parameter are 0x00010020 for left X1 mouse button and, 0x00020040 for the right X2 mouse button. This script was modified from here http://www.autoitscript.com/forum/index.ph...st&p=636051 This script sends a X1 or X2 Mouse button click to the active control window. It works on my XP. expandcollapse popupSleep(3000); allow 3 secs to activate web browser to test jump forward,x2 or jump back with x1 mouse button send click _MouseClickPlus(ControlGetHandle("","",""), "x2") ; WinGetHandle("") ; ; Function Name: _MouseClickPlus() ; Version added: 0.1 ; Description: Sends a click to window ; minimized. ; Parameter(s): $Window = Title of the window to send click to ; $Button = "left" or "right" mouse button ; $X = X coordinate ; $Y = Y coordinate ; $Clicks = Number of clicks to send ; Remarks: You MUST be in "MouseCoordMode" 0 to use this without bugs. ; Author(s): Insolence <insolence_9@yahoo.com> ;Modified: Malkey - Added X1 an X2 Mouse buttons and other bits. ;http://www.autoitscript.com/forum/index.php?s=&showtopic=88517&view=findpost&p=636051 ;=============================================================================== Func _MouseClickPlus($hwnd, $sButton = "left", $X = "", $Y = "", $Clicks = 1) Local $MK_LBUTTON = 0x0001 Local $WM_LBUTTONDOWN = 0x0201 Local $WM_LBUTTONUP = 0x0202 Local $MK_RBUTTON = 0x0002 Local $WM_RBUTTONDOWN = 0x0204 Local $WM_RBUTTONUP = 0x0205 Global $MK_XBUTTON1 = 0x00010020; 0x20 Global $WM_XBUTTONDOWN = 0x20B;x1Button Left side of mouse - Back Global $WM_XBUTTONUP = 0x20C Global $MK_XBUTTON2 = 0x00020040;;x2Button right side of mouse - forward Global $WM_NCXBUTTONDOWN = 0x00AB Global $WM_NCXBUTTONUP = 0x00AC Local $WM_MOUSEMOVE = 0x0200 Local $i = 0 Select Case $sButton = "x2" $Button = $MK_XBUTTON2 $ButtonDown = $WM_NCXBUTTONDOWN $ButtonUp = $WM_NCXBUTTONUP Case $sButton = "x1" $Button = $MK_XBUTTON1 $ButtonDown = $WM_XBUTTONDOWN $ButtonUp = $WM_XBUTTONUP Case $sButton = "left" $Button = $MK_LBUTTON $ButtonDown = $WM_LBUTTONDOWN $ButtonUp = $WM_LBUTTONUP Case $sButton = "right" $Button = $MK_RBUTTON $ButtonDown = $WM_RBUTTONDOWN $ButtonUp = $WM_RBUTTONUP EndSelect If $X = "" Or $Y = "" Then $MouseCoord = MouseGetPos() $X = $MouseCoord[0] $Y = $MouseCoord[1] EndIf For $i = 1 To $Clicks DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", $WM_MOUSEMOVE, "int", 0, "long", _MakeLong($X, $Y)) DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", $ButtonDown, "int", $Button, "long", _MakeLong($X, $Y)) DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", $ButtonUp, "int", $Button, "long", _MakeLong($X, $Y)) Next EndFunc ;==>_MouseClickPlus Func _MakeLong($LoWord, $HiWord) Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF)) EndFunc ;==>_MakeLong
KaFu Posted February 1, 2009 Posted February 1, 2009 Thanks to KaFu's example, I noticed the return values in the $wParam parameter are 0x00010020 for left X1 mouse button and, 0x00020040 for the right X2 mouse button. Really nice . Was more looking into the directio of SetAsyncKeyState yesterday, but it was just too late ... Tested it a little and found that ButtonDown and ButtonUp are more like the same then different values for both buttons (see example). expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Local $hGUI, $GUIMsg $hGUI = GUICreate("4th Mouth Button", 300, 200,10,10) HotKeySet("a","_MouseClickPlusX1") HotKeySet("b","_MouseClickPlusX2") Global Const $WM_XBUTTONDOWN = 0x020B Global Const $MK_XBUTTON1 = 0x00010020; 0x20 GUIRegisterMsg($WM_XBUTTONDOWN, "MY_WM_XBUTTONDOWN") GUISetState() While 1 $GUIMsg = GUIGetMsg() Switch $GUIMsg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Func MY_WM_XBUTTONDOWN($hWnd, $Msg, $wParam, $lParam) $nNotifyCode = BitShift($wParam, 16) $nID = BitAND($wParam, 0x0000FFFF) $hCtrl = $lParam ConsoleWrite($nNotifyCode & @TAB & $nID & @TAB & $hCtrl & @CRLF) Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_XBUTTONDOWN func _MouseClickPlusX1() _MouseClickPlus($hGUI, "x1", "","",1) EndFunc func _MouseClickPlusX2() _MouseClickPlus($hGUI, "x2", "","",1) EndFunc ;Sleep(3000); allow 3 secs to activate web browser to test jump forward,x2 or jump back with x1 mouse button send click ; Function Name: _MouseClickPlus() ; Version added: 0.1 ; Description: Sends a click to window ; minimized. ; Parameter(s): $Window = Title of the window to send click to ; $Button = "left" or "right" mouse button ; $X = X coordinate ; $Y = Y coordinate ; $Clicks = Number of clicks to send ; Remarks: You MUST be in "MouseCoordMode" 0 to use this without bugs. ; Author(s): Insolence <insolence_9@yahoo.com> ;Modified: Malkey - Added X1 an X2 Mouse buttons and other bits. ;http://www.autoitscript.com/forum/index.php?s=&showtopic=88517&view=findpost&p=636051 ;=============================================================================== Func _MouseClickPlus($hwnd, $sButton = "left", $X = "", $Y = "", $Clicks = 1) Local $MK_LBUTTON = 0x0001 Local $WM_LBUTTONDOWN = 0x0201 Local $WM_LBUTTONUP = 0x0202 Local $MK_RBUTTON = 0x0002 Local $WM_RBUTTONDOWN = 0x0204 Local $WM_RBUTTONUP = 0x0205 Local $MK_XBUTTON1 = 0x00010020; 0x20 Local $WM_XBUTTONDOWN = 0x20B;x1Button Left side of mouse - Back Local $WM_XBUTTONUP = 0x20C Local $MK_XBUTTON2 = 0x00020040;;x2Button right side of mouse - forward Local $WM_NCXBUTTONDOWN = 0x00AB Local $WM_NCXBUTTONUP = 0x00AC Local $WM_MOUSEMOVE = 0x0200 Local $i = 0 Select Case $sButton = "x2" $Button = $MK_XBUTTON2 ;$ButtonDown = $WM_NCXBUTTONDOWN ;$ButtonUp = $WM_NCXBUTTONUP $ButtonDown = $WM_XBUTTONDOWN $ButtonUp = $WM_XBUTTONUP Case $sButton = "x1" $Button = $MK_XBUTTON1 $ButtonDown = $WM_XBUTTONDOWN $ButtonUp = $WM_XBUTTONUP Case $sButton = "left" $Button = $MK_LBUTTON $ButtonDown = $WM_LBUTTONDOWN $ButtonUp = $WM_LBUTTONUP Case $sButton = "right" $Button = $MK_RBUTTON $ButtonDown = $WM_RBUTTONDOWN $ButtonUp = $WM_RBUTTONUP EndSelect If $X = "" Or $Y = "" Then $MouseCoord = MouseGetPos() $X = $MouseCoord[0] $Y = $MouseCoord[1] EndIf ;MsgBox(0,"",$x & ' x ' & $y & @crlf & $Clicks & @crlf & $sButton) For $i = 1 To $Clicks DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", $WM_MOUSEMOVE, "int", 0, "long", _MakeLong($X, $Y)) DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", $ButtonDown, "int", $Button, "long", _MakeLong($X, $Y)) DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", $ButtonUp, "int", $Button, "long", _MakeLong($X, $Y)) Next EndFunc ;==>_MouseClickPlus Func _MakeLong($LoWord, $HiWord) Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF)) EndFunc ;==>_MakeLong The reply values are not the same as when I press the buttons manually (these change between different clicks ?), but at least there ARE replies registered. Best Regards OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
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