12

これが私の状況です。Microsoft Kinect の座標をキーボードとマウスのイベントに変換する必要があるアプリケーションを作成しています。

マウスを制御する必要がある場合、あらゆる種類のアプリケーションで意図したとおりにすべてが機能します。この問題は、ゲームなどの Windows イベントを処理しないアプリケーションにキーボード イベント (キー ダウンやキー アップなど) を送信する必要がある場合に発生します。

.net フレームワークの SendKeys クラスを試してみましたが、Windows アプリケーションでのみ動作します。アプリケーションが Half-Life や Doom のようなゲームの場合、同じ効果は得られません。では、私の質問は次のとおりです。これらの他のアプリケーションにキーボード イベントを効果的に送信するにはどうすればよいでしょうか。

4

5 に答える 5

3

SendInputを使用して入力をシミュレートする必要があります。SendMessage と SendKeys は Windows メッセージのレベルで機能する傾向がありますが、DirectX アプリは従来のメッセージ ループを実行しません。

PInvoke.NETにページがありますが、私はそれを使用しようとはしていません。


また、GameDev.net サイトのこのスレッドも参照してください。このスレッドでは、特に DirectInput ベースのアプリケーションとやり取りするときに発生する可能性のある「最初の」問題のいくつかに取り組んでいます。

于 2011-08-23T13:25:55.513 に答える
2

残念ながら、DirectX にはフック機能が組み込まれていません。ただし、それを実行できるライブラリ いくつかあります(これは別のライブラリの .Net ラッパーです) 。また、DirectInput を廃止する XInput を調べる必要があります。

于 2011-08-23T13:26:11.723 に答える
1

次の投稿はあなたの質問への答えであるべきだと思います、

グローバル キーボード フックを使用してキーを送信するにはどうすればよいですか?

回答によると、次のキーコードを SendInput 関数に使用する必要があります 。 http://www.gamespp.com/directx/directInputKeyboardScanCodes.html

于 2011-08-28T17:36:17.197 に答える
0

これは私が使用している迅速で簡単なソリューションです。うまく機能します。

InputSimulator

于 2011-08-23T08:32:34.307 に答える
0

Winapi sendmessage を pInvoke する必要があります。

http://msdn.microsoft.com/en-us/library/ms644950(v=vs.85).aspx

http://pinvoke.net/default.aspx/user32.SendMessage

これは私が使用しているものです。それは機能しますが、それについて少し読む必要があります。これは非常に強力な方法です。

于 2011-08-23T07:38:23.867 に答える