1

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

  • SendKey - 将输入作为字符串发送,例如一些文本或其他内容,但不用于 ENTER TAB 或其他关键键
  • InputSimulator - 完全浪费时间
  • SendInput - 对此也有一些问题。它不编译,我以前从未使用过它
  • PostMessage - 似乎这两个几乎相同,它们再次发送文本但同样没有其他键,例如 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());
        }
}

它给出了这个错误:

无法加载文件或程序集“Microsoft.DirectX.DirectInput.dll”或其中之一  
它的依赖关系。不是有效的Win32应用程序。  
(来自 HRESULT 的异常:0x800700C1)

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

我正在尝试将密钥发送到另一个实例或句柄。C++ 或 C# 任何工作都很好,也是。

4

1 回答 1

1

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

于 2012-07-22T09:24:01.287 回答