C# Maus bewegen lassen

In diesen Beitrag zeige ich euch, wie man in C# und mit der Programmierumgebung Visual Studio ein kleines Programm schreiben kann, um die Maus auf eine gewünschte Position bewegen zu lassen. Dazu braucht man grundlegende Kenntnisse wie man mit Visual Studio arbeitet.

Wer das fertige Projekt runterladen möchte kann dies auch tun: Win_MoveMouse.zip

Der wichtigste Part im Code ist das Initialisieren und Importieren aus der user32.dll.

[DllImport("user32.dll")] 
public static extern void mouse_event(int dwFlags, int dx, int dy); 
private const int MOUSEEVENTF_LEFTDOWN = 0x02; 
private const int MOUSEEVENTF_LEFTUP = 0x04; 
private const int MOUSEEVENTF_RIGHTDOWN = 0x08; 
private const int MOUSEEVENTF_RIGHTUP = 0x10;

Um die Maus dann zu bewegen muss man nun nur noch ein Objekt vom Typen Cursor erstellen und ihm einen Punkt geben um den Mauszeiger zu der gewünschten Position bewegen zu lassen.

this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(x, y);

Um  ein Mausklick auszuführen muss man folgenden Codeschnipsel verwenden.

mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y);
mouse_event(MOUSEEVENTF_RIGHTUP, x, y);

Das erste Argument beschreibt welcher Button auf der Maus gedrückt oder losgelassen werden soll werden.
Das zweite und dritte Argument dient dazu auf welcher X- und Y-Position der folgende Mausklick ausgeführt erden soll.

Hier sieht man den ganzen Quellcode:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.Runtime.InteropServices;


namespace Win_MoveMouse
{
    public partial class frmMoveMouse : Form
    {
        public frmMoveMouse()
        {
            InitializeComponent();
        }
        //Inizalisierung um Mausklicks durchzuführen
        [DllImport("user32.dll")]
        public static extern void mouse_event(int dwFlags, int dx, int dy);
        private const int MOUSEEVENTF_LEFTDOWN = 0x02;
        private const int MOUSEEVENTF_LEFTUP = 0x04;
        private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
        private const int MOUSEEVENTF_RIGHTUP = 0x10;

        private void btnBewegen_Click(object sender, EventArgs e)
        {
            int x;
            int y;
            int BildschirmHoehe;
            int BildschirmBreite;
            this.Cursor = new Cursor(Cursor.Current.Handle);

            //Werte in der TextBoxen von den X und Y-Koordinaten in Variablen speichern.
            x = Convert.ToInt32(txtXKoordinate.Text);
            y = Convert.ToInt32(txtYKoordinate.Text);

            //Bildschirmhöhe und Bildschirmbreite erkennen und in Variablen speichern.
            BildschirmHoehe = Screen.PrimaryScreen.Bounds.Height;
            BildschirmBreite = Screen.PrimaryScreen.Bounds.Width;

            if (x < 0 || x > BildschirmBreite)
            {
                MessageBox.Show("X Koordinate darf nicht kleiner als 0 oder größer als " + BildschirmBreite + " sein.");
            }
            else if (y < 0 || y > BildschirmHoehe)
            {
                MessageBox.Show("Y Koordinate darf nicht kleiner als 0 oder größer als " + BildschirmHoehe + " sein.");
            }
            else
            {
                //Cursor wird an die die zuvor eingetragenen X- und Y-Koordinaten verschoben.
                Cursor.Position = new Point(x, y);
                mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y);
                mouse_event(MOUSEEVENTF_RIGHTUP, x, y);
            }
            
        }

        private void btnBeenden_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}