Wie um den cursor zu bewegen oder zu simulieren, Klicks für andere Anwendungen?

Ich bin erstellen einer C# - Windows-Anwendung mit der Leap Motion Controller. Ich entwickle auf Windows 8 und Visual Studio 2010. Ich benutze SetCursorPos und mouse_event aus user32.dll um den cursor zu bewegen und Klick simulieren.

Ich soll der cursor bewegt werden, wenn Sie in einer beliebigen Anwendung. Wenn ich ausführen/Debuggen von Visual Studio funktioniert es nur, wenn in der Anwendung selbst oder in Visual Studio. Wenn in anderen Programmen die Maus nicht bewegen und die Klicks, die nicht arbeiten, aber wenn ich versuche, Sie zu bewegen Sie den cursor mit der echten Maus geht es zurück zu dem Ort, es war. Beim laufen standalone, es bewegt sich nicht in Visual Studio und mit der Maus verschoben werden können, die mit der realen Maus in anderen Anwendungen.

Ich habe diesen code zu verwenden SetCursorPos und 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);
}

In meiner form-Klasse habe ich die Maus Standort gespeichert in zwei Felder. In einem Timer's tick-ich setze die cursor-position und tun notwendig Klicks so:

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);
    }
}

Den if Aussagen sind für das Leap-Gerät; ich will die Maus zu bewegen und andere Sachen nur, wenn es eine hand, um die Koordinaten.

Ist es sogar möglich, um den cursor zu bewegen oder Mausklicks zu simulieren, die für andere Anwendungen? Und wenn ja, wie?

Schreibe einen Kommentar