私は自分のコンピュータで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(絶対範囲)の新しい座標です。それは完璧ですか?ナー。しかし、今のところうまくいきます。私は、Windowsが特定のプログラムを無視する方法とは何かがあると思います。互換モードのためでしょうか?私は今、それをテストする別のゲームはありませんが、将来互換性のないモードで結果を投稿します。
- ピート
(それは私が別の2時間の答えとして投稿することはできないだろうと私は午前中のフライトをキャッチするためにスリープ状態に持って!)
廃止された 'mouse_event'関数に対して' SendInput'関数を使うことをお勧めします。 –