ゲームである別のウィンドウへのキープレスをシミュレートしようとしています。機能しないものは次のとおりです。
- SendKey - 入力をテキストなどの文字列として送信しますが、ENTER TAB やその他の重要なキーには送信しません
- InputSimulator - 完全に時間の無駄
- SendInput - これにも問題があります。コンパイルされず、これまで使用したことがありません
- PostMessage - これら 2 つはほとんど同じようで、テキストを送信しますが、ENTER TAB などの他のキーは送信しません。また、キーを数秒間押し続けたい場合、wParam の値を把握できませんでした。最後の 16 が繰り返し数と思われる 32 ビットの 16 進数値です。
- SendMessage - PostMessage を参照
- AUTOIT または AHK 誰かがその方法を知っていれば、C# に組み込むのに問題があるようです。これは、C# .cs ファイルに AHK スクリプトを記述してコンパイルできることを意味します。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());
}
}
次のエラーが発生します。
ファイルまたはアセンブリ 'Microsoft.DirectX.DirectInput.dll' またはいずれかを読み込めませんでした その依存関係。は有効な Win32 アプリケーションではありません。 (HRESULT からの例外: 0x800700C1)
DirectX SDKツールキット2007から参照しました
キーを別のインスタンスまたはハンドルに送信しようとしています。C++ または C# で動作するものでも問題ありません。