将键盘事件发送到C#中另一个不处理Windows事件的应用程序

Kic*_*obo 12 c# mouse events keyboard-events kinect

这是我的情况:我们正在编写一个必须将Microsoft Kinect坐标转换为键盘和鼠标事件的应用程序.

当我们需要控制鼠标时,一切都按照我们在任何应用程序中的预期进行.当我们需要将键盘事件(如按键或键盘)发送到不处理Windows事件的应用程序(例如游戏)时,就会出现问题.

我们尝试了.net框架的SendKeys类,它只适用于Windows应用程序.当应用程序是像Half-Life或Doom这样的游戏时,我们无法获得相同的效果.所以,这是我的问题:我们如何有效地将键盘事件发送到这些其他应用程序?

Dam*_*ver 3

您需要使用SendInput模拟输入。SendMessage 和 SendKeys 往往在 Windows 消息级别工作 - 但 DirectX 应用程序不运行传统的消息循环。

PInvoke.NET上有一个页面,但我必须承认,我没有尝试使用它。


另请参阅GameDev.net 站点上的此线程,其中有人解决了与基于 DirectInput 的应用程序交互时可能遇到的一些“初期”问题。