1

シナリオ:クアッドコプター用の基本的な制御プログラムを作成しました。基本的に、ゲームパッドが接続されたノートブックを使用してクアッドコプターにコマンドを送信します。両方が無線で相互に接続されています。この設定は驚くほどうまく機能しますが、次の点に注意してください。

質問:ノートブックで実行されている Win32 アプリケーションは、ウィンドウがフォーカスされていない場合でも、ゲームパッドの状態の変化をどのように受け取ることができますか? AutoHotKey や AutoIt などの一部のプログラムがまさにそれを提供していることは知っていますが、公式の XInput ドキュメントでもインターネットでもドキュメントを見つけることができませんでした。

問題は、同じノートブックで ArduPilot の Mission Planner ソフトウェアを同時に使用することがあるということです。そのため、Mission Planer でテレメトリ データを調べたいと思うたびに、ゲームパッドを処理するアプリケーション ウィンドウがフォーカスされなくなり、ゲームパッドの状態変更の受信が停止します。これは非常に面倒で、正直なところ、危険でもあります。常に機能するラジコンを持っている必要があるからです。

では、ゲームパッド XInput を特定のウィンドウ ハンドルに「ロック」する方法はありますか? (Win32) アプリケーションは、Visual Studio を使用して C++ で記述されています。

編集:ネイティブの XInput API を使用するため、XInputGetState() を使用します。私のメッセージ ループは、翻訳するメッセージ/DispatchMessage() がないたびに XInputGetState() をポーリングするように設計されており、WinMessages はノンブロッキング PeekMessage() でポーリングされます。

4

0 に答える 0