Click to See Complete Forum and Search --> : Generate Mouse Events


July 30th, 1999, 07:37 AM
I've figured out how to set the mouse pointer X and Y positions with the API call SetCursorPos, but how can I generate a left mouse click? I tried this:

SendMessage 0, 513, 0, 0

(Where 513 = WM_LBUTTONDOWN)

But this had no effect.

Any ideas anyone? thanks

Nick

Andy K.
July 31st, 1999, 01:28 PM
Put this into a module
and use mouseclick (button)

public Function MouseClick(byval MBClick as enButtonToClick) as Boolean

Dim cbuttons as Long
Dim dwExtraInfo as Long
Dim mevent as Long

Select Case MBClick
Case mLeft
mevent = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP
Case mRight
mevent = MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP
Case mMiddle
mevent = MOUSEEVENTF_MIDDLEDOWN Or MOUSEEVENTF_MIDDLEUP
Case else
MouseClick = false
Exit Function
End Select

mouse_event mevent, 0&, 0&, cbuttons, dwExtraInfo
MouseClick = true

End Function

Andy K.
July 31st, 1999, 01:43 PM
Add this to module:

private Const MOUSEEVENTF_ABSOLUTE = &H8000
private Const MOUSEEVENTF_LEFTDOWN = &H2
private Const MOUSEEVENTF_LEFTUP = &H4
private Const MOUSEEVENTF_MIDDLEDOWN = &H20
private Const MOUSEEVENTF_MIDDLEUP = &H40
private Const MOUSEEVENTF_MOVE = &H1
private Const MOUSEEVENTF_RIGHTDOWN = &H8
private Const MOUSEEVENTF_RIGHTUP = &H10

private Declare Sub mouse_event Lib "user32" (byval dwFlags as Long, _
byval dx as Long, byval dy as Long, byval cbuttons as Long, _
byval dwExtraInfo as Long)
public Enum enButtonToClick
mLeft
mRight
mMiddle
End Enum
public Function MouseClick(byval MBClick as enButtonToClick) as Boolean

Dim cbuttons as Long
Dim dwExtraInfo as Long
Dim mevent as Long

Select Case MBClick
Case mLeft
mevent = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP
Case mRight
mevent = MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP
Case mMiddle
mevent = MOUSEEVENTF_MIDDLEDOWN Or MOUSEEVENTF_MIDDLEUP
Case else
MouseClick = false
Exit Function
End Select

mouse_event mevent, 0&, 0&, cbuttons, dwExtraInfo
MouseClick = true

End Function