古詩詞大全網 - 成語用法 - VB後臺點擊,執行窗口指定位置點擊.就是相對坐標.問題

VB後臺點擊,執行窗口指定位置點擊.就是相對坐標.問題

Option Explicit

'在VB窗體上添加兩個CommandButton,使用默認名稱,即可觀察測試效果

Private Type POINTAPI

X As Long

Y As Long

End Type

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function ClientToScreen Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long

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)

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

Const MOUSEEVENTF_LEFTDOWN = &H2

Const MOUSEEVENTF_LEFTUP = &H4

Const MOUSEEVENTF_MIDDLEDOWN = &H20

Const MOUSEEVENTF_MIDDLEUP = &H40

Const MOUSEEVENTF_MOVE = &H1

Const MOUSEEVENTF_ABSOLUTE = &H8000

Const MOUSEEVENTF_RIGHTDOWN = &H8

Const MOUSEEVENTF_RIGHTUP = &H10

Private Sub Command1_Click()

Dim Point0 As POINTAPI

Dim Point1 As POINTAPI

GetCursorPos Point0 '獲取當前鼠標坐標

Point1.X = 2 '指定偏移坐標X值,實際應用時視目標窗體而定

Point1.Y = 2 '指定偏移坐標Y值,實際應用時視目標窗體而定

'將偏移Command2的偏移坐標轉換成屏幕坐標

'實際應用時使用指定窗口的句柄

ClientToScreen Command2.hWnd, Point1

'將鼠標移動到轉換後的Point1坐標,即指定窗口的偏移坐標

SetCursorPos Point1.X, Point1.Y

'模擬鼠標左鍵Click動作

mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&

'恢復原鼠標坐標

SetCursorPos Point0.X, Point0.Y

End Sub

Private Sub Command2_Click()

Debug.Print "Click"

End Sub