Leap Motion Controllerを使用して C# Windows アプリケーションを作成しています。私は Windows 8 と Visual Studio 2010 で開発しています。カーソルを移動してクリックをシミュレートするためにSetCursorPos
andmouse_event
を使用しています。user32.dll
どのアプリケーションでもカーソルを移動したい。Visual Studio から実行/デバッグすると、アプリケーション自体または Visual Studio でのみ機能します。他のアプリケーションではマウスが動かず、クリックも効かないのですが、実際のマウスでカーソルを動かそうとすると元の位置に戻ってしまいます。スタンドアロンで実行すると、Visual Studio では動かず、マウスは他のアプリケーションの実際のマウスで動かすことができます。
私は使用するこのコードを持っていSetCursorPos
ますmouse_event
:
[DllImport("user32.dll")]
public static extern long SetCursorPos(int x, int y);
[DllImport("User32.Dll")]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
public static void MouseClick(uint x, uint y) {
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
}
私のフォーム クラスでは、マウスの位置が 2 つのフィールドに格納されています。aTimer
の目盛りで、カーソル位置を設定し、次のように必要なクリックを行います。
if (!frame.Hands.IsEmpty) {
Hand hand = frame.Hands.Leftmost;
if (!hand.Fingers.IsEmpty) {
// Get coordinates...
SetCursorPos(mousex, mousey);
}
}
foreach (Gesture gesture : gestures) {
if (gesture.Type == Gesture.GestureType.TYPESCREENTAP) {
MouseClick(mousex, mousey);
}
}
ステートメントはif
Leap デバイス用です。座標を取得する手があるときだけ、マウスを動かしたり、他のことをしたいです。
カーソルを移動したり、他のアプリケーションのマウス クリックをシミュレートしたりすることはできますか? もしそうなら、どのように?