This repository was archived by the owner on Jan 5, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmdlMouse.bas
186 lines (171 loc) · 7.99 KB
/
mdlMouse.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
Attribute VB_Name = "mdlMouse"
Option Explicit
Public Declare Function GetCursorPosPT& Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI)
Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
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 Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20
Public Const MOUSEEVENTF_MIDDLEUP = &H40
Public Const MOUSEEVENTF_RIGHTDOWN = &H8
Public Const MOUSEEVENTF_RIGHTUP = &H10
Public Const MOUSEEVENTF_MOVE = &H1
Dim Point As POINTAPI
Sub LeftClick(Optional X As Long, Optional Y As Long)
LeftDown X, Y
Wait Settings.lngDelayDownUp
LeftUp X, Y
End Sub
Sub LeftDown(Optional X As Long, Optional Y As Long)
If X = 0 And Y = 0 Then GetCursorPos X, Y
mouse_event MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0
End Sub
Sub LeftUp(Optional X As Long, Optional Y As Long)
If X = 0 And Y = 0 Then GetCursorPos X, Y
mouse_event MOUSEEVENTF_LEFTUP, X, Y, 0, 0
End Sub
Sub RightClick(Optional X As Long, Optional Y As Long)
RightDown X, Y
Wait Settings.lngDelayDownUp
RightUp X, Y
End Sub
Sub RightDown(Optional X As Long, Optional Y As Long)
If X = 0 And Y = 0 Then GetCursorPos X, Y
mouse_event MOUSEEVENTF_RIGHTDOWN, X, Y, 0, 0
End Sub
Sub RightUp(Optional X As Long, Optional Y As Long)
If X = 0 And Y = 0 Then GetCursorPos X, Y
mouse_event MOUSEEVENTF_RIGHTUP, X, Y, 0, 0
End Sub
Sub GetCursorPos(X As Long, Y As Long)
GetCursorPosPT Point
X = Point.X
Y = Point.Y
End Sub
Function CursorPos() As POINTAPI
GetCursorPosPT CursorPos
End Function
Sub MiddleClick(Optional X As Long, Optional Y As Long)
MiddleDown X, Y
Wait Settings.lngDelayDownUp
MiddleUp X, Y
End Sub
Sub MiddleDown(Optional X As Long, Optional Y As Long)
If X = 0 And Y = 0 Then GetCursorPos X, Y
mouse_event MOUSEEVENTF_MIDDLEDOWN, X, Y, 0, 0
End Sub
Sub MiddleUp(Optional X As Long, Optional Y As Long)
If X = 0 And Y = 0 Then GetCursorPos X, Y
mouse_event MOUSEEVENTF_MIDDLEUP, X, Y, 0, 0
End Sub
Sub MouseAction(Optional ByVal mKey As MouseKey = pLeft, Optional ByVal mEvent As MouseEvent = pClick, _
Optional ByVal Method As MouseModes = MM_mouse_event, Optional X As Long, Optional Y As Long)
Dim blnIsClick As Boolean
If X = 0 And Y = 0 Then GetCursorPos X, Y
If mEvent = pClick Then blnIsClick = True: mEvent = pDown
Select Case mKey
Case pLeft
Select Case mEvent
Case pDown
Select Case Method
Case MM_mouse_event
'Left Down mouse_event
mouse_event MOUSEEVENTF_LEFTDOWN, X, Y, ByVal 0&, ByVal 0&
Case MM_keybd_event
'Left Down keybd_event
keybd_event vbKeyLButton, ByVal 0&, KEYEVENTF_KEYDOWN, ByVal 0&
Case MM_SendMessage
'Left Down SendMessage
SendMessage GetForegroundWindow, WM_LBUTTONDOWN, ByVal 0&, ByVal CLng(X + Y * &H10000)
Case MM_PostMessage
'Left Down PostMessage
PostMessage GetForegroundWindow, WM_LBUTTONDOWN, ByVal 0&, ByVal CLng(X + Y * &H10000)
End Select
Case pUp
Select Case Method
Case MM_mouse_event
'Left Up mouse_event
mouse_event MOUSEEVENTF_LEFTUP, X, Y, ByVal 0&, ByVal 0&
Case MM_keybd_event
'Left Up keybd_event
keybd_event vbKeyLButton, ByVal 0&, KEYEVENTF_KEYUP, ByVal 0&
Case MM_SendMessage
'Left Up SendMessage
SendMessage GetForegroundWindow, WM_LBUTTONUP, ByVal 0&, ByVal CLng(X + Y * &H10000)
Case MM_PostMessage
'Left Up PostMessage
PostMessage GetForegroundWindow, WM_LBUTTONUP, ByVal 0&, ByVal CLng(X + Y * &H10000)
End Select
End Select
Case pRight
Select Case mEvent
Case pDown
Select Case Method
Case MM_mouse_event
'Right Down mouse_event
mouse_event MOUSEEVENTF_RIGHTDOWN, X, Y, ByVal 0&, ByVal 0&
Case MM_keybd_event
'Right Down keybd_event
keybd_event vbKeyRButton, 0, KEYEVENTF_KEYDOWN, ByVal 0&
Case MM_SendMessage
'Right Down SendMessage
SendMessage GetForegroundWindow, WM_RBUTTONDOWN, ByVal 0&, ByVal CLng(X + Y * &H10000)
Case MM_PostMessage
'Right Down PostMessage
PostMessage GetForegroundWindow, WM_RBUTTONDOWN, ByVal 0&, ByVal CLng(X + Y * &H10000)
End Select
Case pUp
Select Case Method
Case MM_mouse_event
'Right Up mouse_event
mouse_event MOUSEEVENTF_RIGHTUP, X, Y, ByVal 0&, ByVal 0&
Case MM_keybd_event
'RightUp keybd_event
keybd_event vbKeyRButton, ByVal 0&, KEYEVENTF_KEYUP, ByVal 0&
Case MM_SendMessage
'Right Up SendMessage
SendMessage GetForegroundWindow, WM_RBUTTONUP, ByVal 0&, ByVal CLng(X + Y * &H10000)
Case MM_PostMessage
'Right Up PostMessage
PostMessage GetForegroundWindow, WM_RBUTTONUP, ByVal 0&, ByVal CLng(X + Y * &H10000)
End Select
End Select
Case pMiddle
Select Case mEvent
Case pDown
Select Case Method
Case MM_mouse_event
'Middle Down mouse_event
mouse_event MOUSEEVENTF_MIDDLEDOWN, X, Y, ByVal 0&, ByVal 0&
Case MM_keybd_event
'Middle Down keybd_event
keybd_event vbKeyMButton, ByVal 0&, KEYEVENTF_KEYDOWN, ByVal 0&
Case MM_SendMessage
'Middle Down SendMessage
SendMessage GetForegroundWindow, WM_MBUTTONDOWN, 0, ByVal CLng(X + Y * &H10000)
Case MM_PostMessage
'Middle Down PostMessage
PostMessage GetForegroundWindow, WM_MBUTTONDOWN, 0, ByVal CLng(X + Y * &H10000)
End Select
Case pUp
Select Case Method
Case MM_mouse_event
'Middle Up mouse_event
mouse_event MOUSEEVENTF_MIDDLEUP, X, Y, 0, 0
Case MM_keybd_event
'Middle keybd_event
keybd_event vbKeyMButton, 0, KEYEVENTF_KEYUP, 0
Case MM_SendMessage
'Middle Up SendMessage
SendMessage GetForegroundWindow, WM_MBUTTONUP, 0, ByVal CLng(X + Y * &H10000)
Case MM_PostMessage
'Middle Up PostMessage
PostMessage GetForegroundWindow, WM_MBUTTONUP, 0, ByVal CLng(X + Y * &H10000)
End Select
End Select
End Select
If blnIsClick Then
Wait Settings.lngDelayDownUp, False
MouseAction mKey, pUp, Method, X, Y
End If
End Sub