太简单了, 我举一个模拟鼠标点击的代码, 你的 "担忧" 完全是多馀的原理: 定义一个 Rect 无论分辩率怎么变, 窗体的宽度与高度是不会变的, 座标点也是以窗体的左上角0,0起算, 窗体怎么移动也没问题, 因为在Rect内的座标也将是固定的对应, 无论那个点也跑不掉Option Explicit Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) 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) Const MOUSEEVENTF_LEFTDOWN = &H2 Const MOUSEEVENTF_LEFTUP = &H4 Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As LongPrivate Sub Form_Click() Dim Rec As RECT GetWindowRect Me.hwnd, Rec SetCursorPos Rec.Right - 15, Rec.Top + 15 mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 End Sub
Private Sub Form_Load() w = Screen.Width Debug.Print w h = Screen.Width Debug.Print h x = 2500'屏幕坐标点(x,y) y = 3000 '屏幕坐标点(x,y)的像素值坐标为(px,py),它随分辨率的改变而改变 px = x / Screen.TwipsPerPixelX py = y / Screen.TwipsPerPixelX Debug.Print px Debug.Print py End Sub
太简单了, 我举一个模拟鼠标点击的代码, 你的 "担忧" 完全是多馀的原理: 定义一个 Rect 无论分辩率怎么变, 窗体的宽度与高度是不会变的, 座标点也是以窗体的左上角0,0起算, 窗体怎么移动也没问题, 因为在Rect内的座标也将是固定的对应, 无论那个点也跑不掉Option Explicit
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) 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)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As LongPrivate Sub Form_Click()
Dim Rec As RECT
GetWindowRect Me.hwnd, Rec
SetCursorPos Rec.Right - 15, Rec.Top + 15
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
w = Screen.Width
Debug.Print w
h = Screen.Width
Debug.Print h
x = 2500'屏幕坐标点(x,y)
y = 3000
'屏幕坐标点(x,y)的像素值坐标为(px,py),它随分辨率的改变而改变
px = x / Screen.TwipsPerPixelX
py = y / Screen.TwipsPerPixelX
Debug.Print px
Debug.Print py
End Sub