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