gpt4 book ai didi

c# - 像 GlovePIE 一样伪造输入

转载 作者:太空狗 更新时间:2023-10-29 23:08:47 26 4
gpt4 key购买 nike

我一直在针对 Kinect 进行编程,现在我想让游戏对我在 Kinect 上所做的事情使用react。将按键数据发送到记事本确实很容易,但将其发送到游戏就难多了。

首先,我一直在使用来自 Kinect 的 WPF 骨架示例并暂时构建它。我可以使用 C++ 版本,但我的 C++ 非常生锈,我不想这样做。

这是我到目前为止所做的,我已经尝试了SendKeysSendInputkeybd_eventPost_Message。这些都没有出现在像 Burnout Paradise 这样的游戏中。

我知道 GlovePIE 输入可以进入游戏,但如何?目前我的解决方法/hack 是使用 PPJoy,它在 C++ 中有示例代码来模拟按钮按下。我通过我的 WPF 应用程序中的 [DllImport] 调用它。然后我在 GlovePIE 中拾取操纵杆按钮按下并将其转换为键盘键。所以我转了一圈,这可行,但 PPJoys 驱动程序未签名,所以我不能真正共享此代码,因为人们必须允许测试签名的驱动程序。

有谁知道 GlovePIE 是如何实现按键操作的?我已经在 GlovePIE 论坛上发帖,但没有回复。 GlovePIE 在使用旧的 openNI kinect 驱动程序方面有一些技巧,但我使用的是几周前最近发布的标准微软版本。

最佳答案

好的,不确定回答您自己的问题的独家新闻是什么,但我想出了完整的正确解决方案并想作为已核对的答案分享。

首先包含这个using语句

using System.Runtime.InteropServices;

然后把这个放在你的课上 这个放在你的课上

[DllImport("user32.dll", EntryPoint = "keybd_event", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern void Keybd_event(byte vk, byte scan, int flags, int extrainfo);

这将导入 C 方法以在 C# 中使用。现在有些游戏/应用程序使用虚拟键 VKey,有些(Direct X aka DIKey)使用扫描码。我的问题是我不正确地使用了扫描码,因此它不适用于某些游戏。我建议如果你不知道什么应用程序想要使用这些,你调用它两次,一次用虚拟键,一次用直接输入键

这是使用虚拟键然后使用直接输入键两次调用字母“A”的示例。

KEYDOWN = 0
KEYUP = 2
//Virtual Key
Keybd_event(65, 0, KEYDOWN, 0);

//Direct Input Key
Keybd_event(0, 30, KEYDOWN, 0);

如您所知,A 的值从 VK 到 DIK 是不同的这两个链接都与十六进制值有关,而我上面的示例显示的是 Base 10(整数)

VKeys 链接 http://delphi.about.com/od/objectpascalide/l/blvkc.htm

DIKeys 链接 http://community.bistudio.com/wiki/DIK_KeyCodes

这也适用于 SendInput,但我还没有完全验证。

关于c# - 像 GlovePIE 一样伪造输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com