首页 文章

SendInput的鼠标位置值

提问于
浏览
-3

我正在开发一个C#应用程序来使用Winuser.h中声明的SendInput来模拟鼠标移动 . 我对SendInput的调用工作正常,我可以在屏幕上移动鼠标 .

然后我尝试使用以下方法记录用户鼠标移动:

[DllImport("user32.dll")]
    public static extern bool GetCursorPos(ref POINT lpPoint);

然后将鼠标指针传递给SendInput . 我注意到GetCursorPos获得的鼠标值与SendInput实际定位鼠标的位置之间存在差异 . 例如,鼠标x位置1300(屏幕的最右侧)对应于使用SendInput在屏幕左侧定位的鼠标 .

通过GetCursorPos获得的POINT数据与SendInput使用的坐标系之间的关系是什么 .

谢谢 .

长矛

1 回答

  • 1

    如以下问题所述:

    SendInput doesn't perform click mouse button unless I move cursor

    GetCursorPos返回的屏幕坐标需要转换为绝对并传递给SendInput:

    dx =  (x * 65536) / GetSystemMetrics(SystemMetric.SM_CXSCREEN);
    dy = (y * 65536) / GetSystemMetrics(SystemMetric.SM_CYSCREEN);
    

    长矛 .

相关问题