gpt4 book ai didi

c# - 将击键发送到外部应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 17:02:58 24 4
gpt4 key购买 nike

我用kinect做了一些手势分类的软件,想用这些手势在pc上运行的模拟器上玩马里奥游戏。

为了播放它,我尝试将击键发送到模拟器。在我的代码中,我首先打开窗口(这有效):

Process process = Process.GetProcessesByName("nnnesterJ")[0];
SetForegroundWindow(process.MainWindowHandle);

然后我尝试发送击键:

         case Movement.left: SendKeys.SendWait("{LEFT}"); break;
case Movement.right: SendKeys.SendWait("{RIGHT}"); break;
case Movement.upperleft: SendKeys.SendWait("{LEFT}{UP}"); current_move = Movement.stop; break;
case Movement.upperright: SendKeys.SendWait("{RIGHT}{UP}"); current_move = Movement.stop; break;
case Movement.jump: SendKeys.SendWait("{UP}"); current_move = Movement.stop; break;
case Movement.crouch: SendKeys.SendWait("{DOWN}"); break;

但是,这不起作用 :( 我确实在 excel 中尝试过,然后它确实起作用了(是的,我确定这些键实际上是正确的)。

我也试过这样做:

[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
public static void PressKey(Keys key, bool up)
{
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
if (up)
{
keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
}
else
{
keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
}
}

但不幸的是,这也行不通。有人有一些选择吗?

亲切的问候,赫克托耳

最佳答案

您的模拟器似乎运行在提升状态,而您的应用却没有。

尝试以管理员身份运行您的应用程序,这应该可以解决问题。

关于c# - 将击键发送到外部应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17265188/

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