1

ゲームである別のウィンドウへのキープレスをシミュレートしようとしています。機能しないものは次のとおりです。

  • 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# で動作するものでも問題ありません。

4

1 に答える 1

1

64ビットソリューションで32ビットdllをロードしようとしているようですので、64ビットdllを使用してください

于 2012-07-22T09:24:01.287 に答える