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

标签 c# events mouse keyboard-events kinect

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

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

我们尝试了 .net 框架的 SendKeys 类,它只适用于 Windows 应用程序。当应用程序是像《半条命》或《毁灭战士》这样的游戏时,我们无法获得相同的效果。那么,这是我的问题:我们如何才能有效地将键盘事件发送到这些其他应用程序?

最佳答案

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

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


另见 this thread在 GameDev.net 网站上,有人在该网站上处理了一些在与基于 DirectInput 的应用程序交互时可能遇到的“初期”问题。

关于c# - 将键盘事件发送到 C# 中不处理 Windows 事件的另一个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136000/

相关文章:

c# - 如何测试图像是否为灰度?

actionscript-3 - ActionScript - 鼠标坐标不准确?

matlab - 如何检测屏幕上任意位置的鼠标位置?

c# - 无法在多个 Chrome 实例上运行 Selenium Grid 3.0.1

c# - 使用 c# 扩展方法线程安全读取 XElement 值吗?

delphi - 检测 RichEdit 中 URL 的点击

java - 在 Java 中将 MouseEvent/MouseListener 链接到 ActionMap/InputMap 绑定(bind)

vba - 防止子运行

swift - 查找哪个监视器或屏幕包含鼠标指针 - swift、macos

c# - 为什么 Assert.IsInstanceOfType(0.GetType(), typeof(int)) 会失败?