Visual Basic lets you test the state of mouse buttons only inside a MouseDown, MouseMove, or MouseUp event procedure. To determine the current state of mouse buttons you can use one of the following functions:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As _ IntegerFunction LeftButton() As Boolean LeftButton = (GetAsyncKeyState(vbKeyLButton) And &H8000)End FunctionFunction RightButton() As Boolean RightButton = (GetAsyncKeyState(vbKeyRButton) And &H8000)End FunctionFunction MiddleButton() As Boolean MiddleButton = (GetAsyncKeyState(vbKeyMButton) And &H8000)End Function
If you prefer, you can use the following function, which returns the state of all three buttons as a bit-coded field, in the same format as the Button argument passed to mouse event procedures:
Function MouseButton() As Integer If GetAsyncKeyState(vbKeyLButton) < 0 Then MouseButton = 1 End If If GetAsyncKeyState(vbKeyRButton) < 0 Then MouseButton = MouseButton Or 2 End If If GetAsyncKeyState(vbKeyMButton) < 0 Then MouseButton = MouseButton Or 4 End IfEnd Function