鼠标键盘事件模拟

前些天,我在windows上写了一个用Kinect来玩水果忍者的C#程序。

关键技术主要是

  1. Kinect动作读取,这个我分别有Microsoft Kinect for Windows SDK版本以及OpenNI版本——切水果的程序是用OpenNI来做的,因为有现成的手势跟踪中间件。
  2. 鼠标事件模拟。水果忍者在windows上就是用鼠标来玩的嘛。所以,只要把用代码来模拟鼠标事件就行了。
我先是在网上搜索并到了一个Windows Input Simulator的项目 http://inputsimulator.codeplex.com/
但是,作者的代码支持的是键盘事件,没有鼠标事件。我除了用Kinect来玩水果忍者,还拿来操作NES红白机在windows上模拟器,也需要键盘事件。于是我就自己在他的核心InputSimulator类中加入了鼠标支持。
主要是调用了如下windows API
        static extern UInt32 SendInput(UInt32 numberOfInputs, INPUT[] inputs, Int32 sizeOfInputStructure);/*这是InputSimulator的核心*/
        static extern bool SetCursorPos(int X, int Y);/*我用来移动鼠标的*/
        static extern bool GetCursorPos(out Point lpPoint);/*我用来获取鼠标当前位置的*/


使用前注意要使用ScreenPositionToInputPosition或ScreenPositionToInputPosition方法将屏幕坐标转换为世界坐标(?或者应该叫什么名字?物理坐标?点阵坐标?)

例子:

//鼠标单击

InputSimulator.SimualteMouseClick(VirtualKeyCode.LBUTTON, RealworldPointToInputPonit(e.EndPosition));

//鼠标移动

InputSimulator.SimulateMouseMove(RealworldPointToInputPonit(e.Position));


注意,此源码包按原Windows Input Simulator项目的license要求,继承Microsoft Public License。



好久没更新优快云博客了,这一篇写得比较仓促。

对这个包有问题的童鞋,请在下面留言

下载地址:http://download.youkuaiyun.com/detail/fandongwei/4589648



Java也可以模拟键盘、鼠标事件,并且更简单。使用Robot类即可,需要注意的是,Robot对于鼠标的坐标用的直接就是屏幕坐标,这一点和windows api不一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值