admin 管理员组文章数量: 887021
WINCE下模拟鼠标点击,移动
最近进行一个车载项目, 碰到这样的需求: 通过串口接收鼠标的按下/弹起和坐标消息, 在WINCE下模拟鼠标消息.经过努力, 得出了两个方案:
1. 使用广播发送鼠标消息
2. 使用mouse_event. 实际测试的时候
经过测试, 发现广播发送鼠标消息效果不佳:
int x = 100;
int y = 100;
PostMessage((IntPtr)HWND_BROADCAST, WM_LBUTTONDOWN, (IntPtr)0, (IntPtr)(y << 16 | x));
PostMessage((IntPtr)HWND_BROADCAST, WM_LBUTTONUP, (IntPtr)0, (IntPtr)(y << 16 | x));
PostMessage((IntPtr)HWND_BROADCAST, WM_MOUSEMOVE, (IntPtr)1, (IntPtr)(y << 16 | x));
具体表现为在普通的点击(DOWN, UP)没有太大问题, 但是对于车载导航的手写, 就写不出来了(没有找到原因, 可能是车载倒车不仅仅需要MOVE消息, 还需要TOUCH消息吧, 我从下文反推回来的). 所以就采用了mouse_event的方法.
鼠标按下:
mouse_event(MOUSEEVENTF_TOUCH | MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);鼠标移动:
mouse_event(MOUSEEVENTF_TOUCH | MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);鼠标弹起:
mouse_event(MOUSEEVENTF_TOUCH | MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
这里特别说明:
在wince上面, 需要先发送一个MOUSEEVENTF_TOUCH, 然后再发送MOUSEEVENTF_LEFTDOWN, MOVE, UP消息.
如果指定了MOWSEEVENTF_ABSOLOTE值,则dx和dy含有标准化的绝对坐标,其值在0到65535之间。事件程序将此坐标映射到显示表面。坐标(0,0)映射到显示表面的左上角,(6553,65535)映射到右下角, 这一点一定要注意, 我在这里就吃过亏, 我先前是直接将坐标传入, 没有进行一个转化.
转化的方法, 如果是800 * 480分辨率
int x = 300;int y = 300;int dx = x * 65535 / 800;int dy = y * 65535 / 480;
const int MOUSEEVENTF_MOVE = 0x0001; //移动鼠标 const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下 const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起 const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键按下 const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起 const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下 const int MOUSEEVENTF_MIDDLEUP = 0x0040; //模拟鼠标中键抬起 const int MOUSEEVENTF_ABSOLUTE = 0x8000; //标示是否采用绝对坐标 const int MOUSEEVENTF_TOUCH = 0x100000;
写下此文的目的是给有同样有需求的人以启发. 我会告诉你我花了一天时间来实现CE下模拟鼠标点击吗?
参考资料:
本文标签: WINCE下模拟鼠标点击 移动
版权声明:本文标题:WINCE下模拟鼠标点击,移动 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688071708h175830.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论