C# と kinect SDK を使用して、コンピューターでマウスを操作する独自のソフトウェアに取り組んでいます。Red Alert やある種の RTS のようなゲームをプレイしたり、一般的なナビゲーションに使用したりしたいと思っています。
私が見つけた問題は、赤い警告のような別のマウスでプログラムを使用したり、マウスの統合がサポートされていない仮想マシンに入ったりすると、C# プログラムが行っている呼び出しをプログラムが認識しないことです。 mouse_event 呼び出しはもちろん、System.Windows.Forms.Cursor 呼び出しまで。私はウィンドウとのインターフェースが初めてで、ここで何が起こっているのか、誰かが説明/解決策を提示できますか?
--UPDATE-- 更新として、何が起こっているのかまだ完全にはわかりませんが、特に赤い警告の回避策を見つけたようです。
レッド アラートはグラフィックス プログラムがかなり低いため、XP クライアントを備えた vmware ワークステーションである私専用の仮想マシン内で実行するのは簡単です。mouse_event コードを使用するとうまく動作しますが、私が苦労したのは、マウスの動きを表す正しいコードを見つけることでした。MOVE フラグはマウスを相対的に動かしているように見えますが、これは望ましくありませんでした。絶対タグはマウスをまったく動かしませんでした。実際、画面上で絶対的な動きを生成するのはそれらの OR であるため、マウスの動きとクリックのエミュレーションのコードは次のようになりました。
mouse_event((int)0x00000002, cursor.X, cursor.Y, 0, 0);
クリックと
mouse_event((int)(0x00000001 | 0x00008000), x, y, 0 0);
x と y は 65535 (絶対範囲) からの新しい座標です。完璧ですか?いや。しかし、それは今のところ機能します。おそらく互換モードが原因で、raを実行するときにWindowsが特定のプログラムを無視する方法に関係があると思いますか?今のところテストする別のゲームはありませんが、将来的に非互換モードで結果を投稿します.
- ピート
(それでは、さらに 2 時間回答として投稿できず、朝のフライトに間に合うように寝なければなりません!)