用软件模拟鼠标拖动窗体
实现鼠标点住窗体标题栏(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 也不对.
请问该如何纠正这个偏差,实现准确拖动呢?

解决方案 »

  1.   

    x1,y1 x2,y2 是没有错的 是对于屏幕坐标的
    问题出在 屏幕坐标x1,y1 x2,y2  和 mouse_event 参数需要的坐标不一样,我问的就是如何转换.
      

  2.   

    Private Sub ScreenToAbsolute(lpPoint As POINTAPI)
    lpPoint.x = lpPoint.x * (&HFFFF& / GetSystemMetrics(SM_CXSCREEN))
    lpPoint.y = lpPoint.y * (&HFFFF& / GetSystemMetrics(SM_CYSCREEN))
    End Sub用这个转下坐标轴.....