| 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) |
| 参数 | 意义 |
|---|---|
| dwFlags | 鼠标动作标记 |
| dx | 表示 x 方向坐标或偏移 |
| dy | 表示 y 方向坐标或偏移 |
| cButtons | 滚轮滚动值,正值向上,负值向下 120 表示滚轮按下 |
| dwExtraInfo | 附加值,GetMessgeExtrainfo 函数 |
这些消息中,鼠标位置为屏幕位置。
| 参数 | 意义 |
|---|---|
| Public Const MOUSEEVENTF_ABSOLUTE = &H8000 | 表明 dx,dy 为鼠标绝对坐标,否则为相对移动位置(点数) 注:绝对坐标时,屏幕右下角坐标是 (65535,65535) |
| Public Const MOUSEEVENTF_MOVE = &H1 | 发生移动 |
| Public Const MOUSEEVENTF_LEFTDOWN = &H2 | 按下鼠标左键 |
| Public Const MOUSEEVENTF_LEFTUP = &H4 | 松开鼠标左键 |
| Public Const MOUSEEVENTF_RIGHTDOWN = &H8 | 按下鼠标右键 |
| Public Const MOUSEEVENTF_RIGHTUP = &H10 | 松开鼠标右键 |
| Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 | 按下鼠标中键 |
| Public Const MOUSEEVENTF_MIDDLEUP = &H40 | 松开鼠标中键 |
| MOOSEEVENTF_WHEEL | 鼠标滚轮滚动。移动的数量由 cButtons 给出 |
| 参数 | 意义 |
|---|---|
| hwnd | 接收消息的窗口句柄 |
| msg | msg 鼠标消息 |
| wParam | Hittest 光标所在元素 |
| lParam | 指向 Point 结构的指针 |
这些消息中,鼠标位置为屏幕位置。
| 常量 | 意义 |
|---|---|
| WM_NCLBUTTONDBLCLK | 左键双击 |
| WM_NCLBUTTONDOWN | 左键按下 |
| WM_NCLBUTTONUP | 左键放开 |
| WM_NCRBUTTONDBLCLK | 右键双击 |
| WM_NCRBUTTONDOWN | 右键按下 |
| WM_NCRBUTTONUP | 右键放开 |
| WM_NCMBUTTONDBLCLK | 中键双击 |
| WM_NCMBUTTONDOWN | 中键按下 |
| WM_NCMBUTTONUP | 中键放开 |
代表光标位于窗口的位置,由系统发送 WM_NCHITTEST 消息及鼠标位置到窗口返回的值,同 DefWindowProc 函数。
截获此消息可修改实际的位置。
| Hittest DefWindowProc(hwnd, WM_NCHITTEST, 0, makelparam(x,y)) |
| 常量 | 意义 |
|---|---|
| HTBORDER | 不可调窗口的边框 |
| HTBOTTOM | 底部边框 |
| HTBOTTOMLEFT | 左下角边框 |
| HTBOTTOMRIGHT | 右下角边框 |
| HTCAPTION | 标题栏 |
| HTCLIENT | 客户区 |
| HTCLOSE | 关闭按钮 |
| HTERROR | On the screen background or on a dividing line between windows (same as HTNOWHERE, except that the DefWindowProc function produces a system beep to indicate an error) |
| HTGROWBOX | In a size box (same as HTSIZE) |
| HTHELP | 帮助按钮 |
| HTHSCROLL | 水平滚动条 |
| HTLEFT | 左边框 |
| HTMENU | 菜单栏 |
| HTMAXBUTTON | 最大化按 |
| HTMINBUTTON | 最小化按钮 |
| HTNOWHERE | On the screen background or on a dividing line between windows |
| HTREDUCE | 最小化按钮 |
| HTRIGHT | 右边框 |
| HTSIZE | In a size box (same as HTGROWBOX) |
| HTSYSMENU | 系统菜单或子菜单的关闭按钮 |
| HTTOP | 顶部边框 |
| HTTOPLEFT | 左上角边框 |
| HTTOPRIGHT | 右上角边框 |
| HTTRANSPARENT | In a window currently covered by another window in the same thread (the message will be sent to underlying windows in the same thread until one of them returns a code that is not HTTRANSPARENT) |
| HTVSCROLL | 垂直滚动条 |
| HTZOOM | 最大化按钮 |
| 参数 | 意义 |
|---|---|
| hwnd | 接收消息的窗口句柄 |
| msg | msg 鼠标消息 |
| lParam | 鼠标屏幕位置,低位 X,高位 Y |
| 常量 | 意义 |
|---|---|
| WM_MOUSEMOVE = 0x0200 | 鼠标移动 |
| WM_LBUTTONDOWN = 0x0201 | 左键按下 |
| WM_LBUTTONUP = 0x0202 | 左键放开 |
| WM_LBUTTONDBLCLK = 0x0203 | 左键双击 |
| WM_RBUTTONDOWN = 0x0204 | 右键按下 |
| WM_RBUTTONUP = 0x0205 | 右键放开 |
| WM_RBUTTONDBLCLK = 0x0206 | 右键双击 |
| WM_MBUTTONDOWN = 0x0207 | 中键按下 |
| WM_MBUTTONUP = 0x0208 | 中键放开 |
| WM_MBUTTONDBLCLK = 0x0209 | 中键双击 |
| WM_MOUSEWHEEL = 0x020A | 滚动 |
| SetCursorPos(1279,0); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); |