这是我的情况:我们正在编写一个必须将Microsoft Kinect坐标转换为键盘和鼠标事件的应用程序。
当我们需要控制鼠标时,一切都按照我们在任何应用程序中的预期进行。当我们需要将键盘事件(如按键或键盘)发送到不处理Windows事件的应用程序(例如游戏)时,就会出现问题。
我们尝试了.net框架的SendKeys类,它只适用于Windows应用程序。当应用程序是像Half-Life或Doom这样的游戏时,我们无法获得相同的效果。所以,这是我的问题:我们如何有效地将键盘事件发送到这些其他应用程序?
答案 0 :(得分:3)
您需要使用SendInput模拟输入。 SendMessage和SendKeys倾向于在Windows消息级别工作 - 但DirectX应用程序不运行传统的消息循环。
PInvoke.NET上有一个页面,但我必须承认,我没有尝试过使用它。
另请参阅GameDev.net网站上的this thread,其中有人处理了与基于DirectInput的应用程序交互时可能遇到的一些“问题”。
答案 1 :(得分:2)
答案 2 :(得分:1)
我认为以下帖子应该是你问题的答案,
How do i send keys using a global keyboard hook?
根据答案,你必须使用以下密钥代码到SendInput函数, http://www.gamespp.com/directx/directInputKeyboardScanCodes.html
答案 3 :(得分:0)
你需要pInvoke Winapi sendmessage。
http://msdn.microsoft.com/en-us/library/ms644950(v=vs.85).aspx
http://pinvoke.net/default.aspx/user32.SendMessage
这就是我正在使用的。它有效,但你必须阅读一点。这是非常强大的方法。
答案 4 :(得分:0)
这是我正在使用的快速简便的解决方案。效果很好。