gpt4 book ai didi

c# - 在C#中模拟KeyPress到游戏

转载 作者:太空宇宙 更新时间:2023-11-04 14:15:26 26 4
gpt4 key购买 nike

我正在尝试将按键模拟到另一个窗口,这是一个游戏。不起作用的是:

  • SendKey - 将输入作为字符串发送,例如某些文本或其他内容,但不用于 ENTER TAB 或其他关键键
  • InputSimulator - 完全是浪费时间
  • SendInput - 在这方面也有一些问题。它无法编译,而且我以前从未使用过它
  • PostMessage - 看起来这 2 个几乎相同,而且它们确实发送文本,但同样没有其他键,例如 ENTER TAB 或其他键。如果我想按住键几秒钟,也无法计算出 wParam 的值。它是一个32位的十六进制值,其中最后16位似乎是重复数。
  • SendMessage - 查看 PostMessage
  • AUTOIT 或 AHK 似乎很难将它们合并到 C# 中,如果有人知道如何做到这一点,那将有很大帮助,这意味着我可以在 C# .cs 文件中编写 AHK 脚本,以便它可以编译. COM、引用或任何东西。

DirectInput 有问题

public void Test_KeyDown()
{
INPUT[] InputData = new INPUT[2];
Key ScanCode = Microsoft.DirectX.DirectInput.Key.W;

InputData[0].type = 1; //INPUT_KEYBOARD
InputData[0].ki.wScan = (short)VirtualKeyCode.NUMPAD2 ; //ScanCode;
InputData[0].ki.dwFlags = (int)KEYEVENTF.SCANCODE;

InputData[1].type = 1; //INPUT_KEYBOARD
InputData[1].ki.wScan = (short)VKeys.VK_W;
InputData[1].ki.dwFlags = (int)(KEYEVENTF.KEYUP | KEYEVENTF.UNICODE);

// send keydown
if (SendInput(2, InputData, Marshal.SizeOf(InputData[1])) == 0)
{
System.Diagnostics.Debug.WriteLine("SendInput failed with code: " +
Marshal.GetLastWin32Error().ToString());
}
}

它给出了这个错误:

Could not load file or assembly 'Microsoft.DirectX.DirectInput.dll' or one of  its dependencies.  is not a valid Win32 application.  (Exception from HRESULT: 0x800700C1)

我从 DirectX SDK 工具包 2007 中引用了它

我正在尝试将 key 发送到另一个实例或句柄。 C++ 或 C# 任何可用的东西也都很好。

最佳答案

看起来你正试图在 64 位解决方案中加载 32 位 dll,所以请使用 64 位 dll

关于c# - 在C#中模拟KeyPress到游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599020/

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