2012-06-19 5 views
5

Czy istnieje sposób na manipulowanie pozycją myszy bez użycia System.Windows.Forms.Cursor? Może coś w rodzaju interopu?Ustawienie pozycji myszy bez System.Windows.Forms

Powodem jest to, że używamy wyspecjalizowanego podzbioru .NET, który nie może zawierać System.Windows.Forms.

+0

to sprawdzić, to co pytający w tej sprawie robi. http://stackoverflow.com/questions/8339565/send-mouse-keyboard-events – bnvdarklord

+0

Tak, coś podobnego do współpracy. Pinvoke SetCursorPos(). –

+0

Jaki to podzbiór? Czy zawiera WPF lub WinRT czy coś takiego? – svick

Odpowiedz

6

oops mój zły, przeczytaj pytanie zbyt szybko, heres poprawne połączenia PInvoke

[DllImport("user32.dll")] 
static extern bool SetCursorPos(int X, int Y); 

Źródło: http://www.pinvoke.net/default.aspx/user32.setcursorpos

+0

Szukam ustawienia, więc potrzebuję http://www.pinvoke.net/default.aspx/user32.setcursorpos –

+0

Właściwie to, czego naprawdę chciałem, to http://www.pinvoke.net/default.aspx /user32.ClipCursor, po prostu nie wiedziałem, że coś takiego istnieje! Życie jest dobre. –

-2
private void MoveCursor() 
{ 
    // Set the Current cursor, move the cursor's Position, 
    // and set its clipping rectangle to the form. 

    this.Cursor = new Cursor(Cursor.Current.Handle); 
    Cursor.Position = new Point(Cursor.Position.X - 50, Cursor.Position.Y - 50); 
    Cursor.Clip = new Rectangle(this.Location, this.Size); 
} 
+0

Poniższy przykładowy kod tworzy kursor z uchwytu bieżącej kursora, zmienia jego położenie i wycina prostokąt. W rezultacie kursor przesunie się w górę i w lewo o 50 pikseli od miejsca, w którym jest wykonywany kod. Dodatkowo prostokąt przycinający kursora zostaje zmieniony na granice formularza (domyślnie jest to cały ekran użytkownika). Ten przykład wymaga formularza i przycisku, aby wywołać ten kod po kliknięciu. –

+3

Pytanie dotyczy faktu, że nie można użyć System.Windows.Forms.Cursor. –