我正在开发自己的软件,以使用 C# 和 kinect SDK 在我的计算机上操作鼠标。我真的很想尝试用它来玩像红色警报这样的游戏,或者某种 RTS,甚至只是用于一般导航。
我发现的问题是,当使用带有不同鼠标的程序时,例如红色警报或进入不支持鼠标集成的虚拟机时,程序不会接听 C# 程序正在进行的调用到 System.Windows.Forms.Cursor 调用,更不用说 mouse_event 调用了。我是与 Windows 交互的新手,这里发生了什么,有人可以解释/提出解决方案吗?
--UPDATE-- 作为更新,我仍然不完全确定发生了什么,但我似乎找到了特别是红色警报的解决方法;
由于红色警报是一个相当低的图形程序,因此在专门为我设计的虚拟机(带有 XP 客户端的 vmware 工作站)中运行它是微不足道的。如果您使用 mouse_event 代码,它工作得很好,但是,我一直在努力寻找正确的代码来表示鼠标移动。似乎 MOVE 标志相对移动鼠标,这是我不想要的,而绝对标签根本没有移动鼠标。事实上,在屏幕上产生绝对移动的是它们的 OR,所以我的鼠标移动和点击模拟代码最终看起来像这样:
mouse_event((int)0x00000002, cursor.X, cursor.Y, 0, 0);
点击和
mouse_event((int)(0x00000001 | 0x00008000), x, y, 0 0);
对于鼠标移动,其中 x 和 y 是 65535(绝对范围)之外的新坐标。完美吗?不。但它现在有效。我认为这与 Windows 在运行 ra 时忽略某些程序的方式有关,可能是因为兼容模式?我现在没有其他游戏可以测试它,但我会在未来发布不兼容模式的结果。
- 皮特
(它不会让我再发布两个小时作为答案,我必须睡觉才能赶上早上的航班!)