如何模仿普通鼠标
来源:互联网 发布:python json 增加元素 编辑:程序博客网 时间:2024/04/28 01:17
今天在微软社区碰到一个朋友,他现在在做一个三维鼠标的移动程序,功能就是移动这个三维鼠标的效果要跟移动普通鼠标一样。这个三维鼠标采用串口通讯的方式对x坐标和y坐标进行实时监控。现在的问题是如何模拟这个效果呢?比如很慢地移动普通鼠标一段距离,光标在屏幕上移动很短距离;但是很快地移动相同的距离,光标却能在屏幕上移动很长距离。但是他没有思路,我在社区上回贴给出了解答(http://forums.microsoft.com/china/ShowPost.aspx?PostID=2554552&SiteID=15&mode=1),顺便在这里也贴一下:
这个问题实际上是两个问题的叠加:
1)如何得到鼠标的实际移动信息?
2)如何将得到的移动信息传给应用程序?
3)如何让Windows系统反馈移动信息
对于问题1),你需要写一个Mouse Upper Filter Driver。重点是为主功能码IRP_MJ_INTERNAL_DEVICE_CONTROL书写相应的Handler,当前的IRP的成员Parameters.DeviceIoControl.Type3InputBuffer 中存放的是ClassDeviceObject和ClassService。后者是一个可以定制的回调函数指针。对应的回调函数的第2个参数指向第一个鼠标数据包,第3个参数指向最后一个鼠标数据包,最后一个参数表示鼠标数据包的数目。鼠标数据包其实是一个MOUSE_INPUT_DATA数据结构,其中的成员LastX和LastY分别表示X坐标和Y坐标。
对于问题2),你可以在应用程序中调用CreateFile()来打开驱动,然后调用DeviceIoControl()来与驱动通信,得到上述驱动捕获的鼠标数据。
对于问题3),你可以调用SDK函数SendInput()
UINT SendInput(
UINT nInputs, LPINPUT pInputs, int cbSize);
第2个参数指向INPUT数据结构,其中的成员mi对应鼠标数据,实际上是MOUSEINPUT数据结构。
- 如何模仿普通鼠标
- 模仿鼠标操作代码
- C#中模仿鼠标拖动窗口
- 在MouseButtonDowm事件中模仿鼠标双击
- unity3d模仿魔兽世界鼠标对游戏操作
- iOS,如何模仿一个App
- iOS,如何模仿一个App
- iOS,如何模仿一个App
- iOS,如何模仿一个App
- 树莓派和普通PC共享键盘鼠标
- c# 模仿鼠标拖拽矩形框 张宇轩
- WPF鼠标划线测距——模仿电子地图测距
- C++用钩子模仿按键精灵录制键盘鼠标的功能
- 第七章 7-3 使用键盘模仿鼠标操作
- 模仿
- 模仿
- 模仿
- 模仿
- 在非托管环境中调用托管对象
- 工厂与职责链模式
- Script# 入门
- window 窗口对象操作
- 高网页打开速度的13条规则
- 如何模仿普通鼠标
- 相声也能SOA
- Thinking in Java第四章阅读小结
- serv -u软件截图
- 验证码图片生成
- Datagrid popup as itemEditor(翻译转载)弹出式的数据表编辑器的实现
- Windows API一日一练(87)CreateProcess函数
- 多进程程序设计(进程的创建与结束)
- 成都最难抢劫的地儿