0
我试图模拟一个按键到另一个窗口,这是一个游戏。不工作的事情是:在C#中模拟KeyPress到游戏
- SendKey - 发送输入像一些文本什么的字符串,但不会去ENTER TAB或其他关键键
- InputSimulator - 时间 完全是浪费
- SendInput - 也有一些问题。它不会编译,我从来没有用过它
- PostMessage - 看起来这两个几乎是一样的,他们再次发送文本,但没有其他键,如ENTER键或其他键。也不能找出wParam的值,如果我想按住几秒钟的关键。它是一个32位十六进制值,其中最后16个似乎是重复数。如果有人知道如何做到这一点,AUTOIT或AHK似乎有麻烦被整合到C#中,这将非常有帮助,这意味着我可以在C#中编写AHK脚本, .cs文件,以便编译。 COM,ref或其他任何东西。
与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年
我想送另一个实例或句柄的关键。 C++或C#的任何工作也很好。
首先,改变'wScan'到'wVk'。在填充所需内容之前,最好将对象的内存归零。 – chris 2012-07-22 09:15:30