用软件模拟鼠标拖动窗体
实现鼠标点住窗体标题栏(x1,y1)位置按左键拖到(x2,y2)放下
sub DoDrag(byval x1 as long,byval y1 as long,byval x2 as long,byval y2 as long)
dim Dx as long,Dy as long
SetCursorPos X1, Y1
Dx = X2 - X1
Dy = Y2 - Y1
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MOVE, Dx, Dy, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
end sub
基本效果可以.
问题:位置总是不对 有个明显的偏差,用 MOUSEEVENTF_ABSOLUTE,x2,y2 也不对.
请问该如何纠正这个偏差,实现准确拖动呢?
实现鼠标点住窗体标题栏(x1,y1)位置按左键拖到(x2,y2)放下
sub DoDrag(byval x1 as long,byval y1 as long,byval x2 as long,byval y2 as long)
dim Dx as long,Dy as long
SetCursorPos X1, Y1
Dx = X2 - X1
Dy = Y2 - Y1
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MOVE, Dx, Dy, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
end sub
基本效果可以.
问题:位置总是不对 有个明显的偏差,用 MOUSEEVENTF_ABSOLUTE,x2,y2 也不对.
请问该如何纠正这个偏差,实现准确拖动呢?
问题出在 屏幕坐标x1,y1 x2,y2 和 mouse_event 参数需要的坐标不一样,我问的就是如何转换.
lpPoint.x = lpPoint.x * (&HFFFF& / GetSystemMetrics(SM_CXSCREEN))
lpPoint.y = lpPoint.y * (&HFFFF& / GetSystemMetrics(SM_CYSCREEN))
End Sub用这个转下坐标轴.....