0

こんにちは、プログラムの助けが必要です。C# と Leap Motion Device でコンソール アプリケーションを作成しました。私のプログラムは仮想マウスをシミュレートし、カーソルと左/右クリックを使用して

[System.Runtime.InteropServices.DllImport("user32.dll")]

public static void MouseClickLeft(int x, int y) 
        {

            mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
        }

        public static void MouseClickRight(int x, int y)
        {
            mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
            mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
        }

このプログラムを別のアプリで実行する必要がありますが、マウス コントロールは、コンソール アプリケーションがメイン ウィンドウとして実行されている場合にのみ機能し、デスクトップまたは別のアプリで左クリックすると機能しなくなります。C# でのプログラミングの初心者ですが、これをバックグラウンドで実行し、マウスを動かすためにできることはありますか?

4

2 に答える 2

2

アプリケーションがフォアグラウンド アプリケーションでない場合に Leap Motion トラッキング データを受信するには、バックグラウンド フレーム ポリシーを設定する必要があります。

controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);

この関数はいつでも呼び出すことができますが、結果は非同期であるため、policyFlags プロパティはすぐには変化を示しません。

于 2013-07-12T01:01:42.727 に答える
0

これがどのように行われるかの例については、私の Key Clone アプリケーションを見てください: https://github.com/Mataniko/WowKeyclone/blob/master/Interop.cs

私の場合、WH_KEYBOARD_LL でフックを設定しています。あなたの場合は WH_MOUSE_LL を使用します。

フックの設定に関する追加情報は、http: //msdn.microsoft.com/en-us/library/windows/desktop/ms644959 (v=vs.85).aspx にあります。

さらに情報が必要な場合は、コメントでお知らせください。

于 2013-06-26T05:14:38.040 に答える