Ok use this it is better than all #include <APISysConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPISys.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
; Create GUI
Global $GUI = GUICreate('Test', 1, 1)
Local $tRID = DllStructCreate($tagRAWINPUTDEVICE)
DllStructSetData($tRID, 'UsagePage', 0x01) ; Generic Desktop Controls
DllStructSetData($tRID, 'Usage', 0x02) ; Mouse
DllStructSetData($tRID, 'Flags', $RIDEV_INPUTSINK)
DllStructSetData($tRID, 'hTarget', $GUI)
_WinAPI_RegisterRawInputDevices($tRID)
GUIRegisterMsg($WM_INPUT, 'WM_INPUT')
GUISetState(@SW_HIDE)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func WM_INPUT($hWnd, $iMsg, $wParam, $lParam)
#forceref $iMsg, $wParam
Switch $hWnd
Case $GUI
Local $tRIM = DllStructCreate($tagRAWINPUTMOUSE)
If _WinAPI_GetRawInputData($lParam, $tRIM, DllStructGetSize($tRIM), $RID_INPUT) Then
Local $iFlags = DllStructGetData($tRIM, 'Flags')
Select
Case BitAND($iFlags, $MOUSE_ATTRIBUTES_CHANGED)
; You need to query the mouse attributes and update bitmap...
Case Else
EndSelect
$iFlags = DllStructGetData($tRIM, 'ButtonFlags')
If BitAND($iFlags, BitOR($RI_MOUSE_MIDDLE_BUTTON_DOWN, $RI_MOUSE_MIDDLE_BUTTON_UP, $RI_MOUSE_LEFT_BUTTON_DOWN, $RI_MOUSE_LEFT_BUTTON_UP, $RI_MOUSE_RIGHT_BUTTON_DOWN, $RI_MOUSE_RIGHT_BUTTON_UP)) Then
Select
Case BitAND($iFlags, $RI_MOUSE_LEFT_BUTTON_DOWN)
If Not _CheckOtheBtnPress(1) Then
ToolTip("Mouse Left btn down")
EndIf
Case BitAND($iFlags, $RI_MOUSE_LEFT_BUTTON_UP)
If Not _CheckOtheBtnPress(1) Then
ToolTip("Mouse Left btn up")
EndIf
Case BitAND($iFlags, $RI_MOUSE_RIGHT_BUTTON_DOWN)
If Not _CheckOtheBtnPress(2) Then
ToolTip("Mouse Right btn down")
EndIf
Case BitAND($iFlags, $RI_MOUSE_RIGHT_BUTTON_UP)
If Not _CheckOtheBtnPress(2) Then
ToolTip("Mouse Right btn up")
EndIf
EndSelect
EndIf
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_INPUT
Func _CheckOtheBtnPress($keytoIGNORE)
For $C = 1 To 222 Step 1
If $C = $keytoIGNORE Then ContinueLoop
If _IsPressed(Hex($C, 2)) Then Return 1
Next
Return 0
EndFunc