wake-up-neo.net

Wie kann ich einen Mausklick an einer bestimmten Position auf dem Bildschirm simulieren?

Was ich tun möchte, ist die Maus zu manipulieren. Es wird ein einfaches Makro für meine eigenen Zwecke sein. Also bewegt es meine Maus zu einer bestimmten Position auf dem Bildschirm und klickt so, als würde ich mit einem bestimmten Intervall klicken.

41
MonsterMMORPG

Hier ist ein Code, der nicht verwaltete Funktionen verwendet, um Mausklicks zu simulieren:

//This is a replacement for Cursor.Position in WinForms
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;

//This simulates a left mouse click
public static void LeftMouseClick(int xpos, int ypos)
{
    SetCursorPos(xpos, ypos);
    mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
}

Um die Maus für eine bestimmte Dauer gedrückt zu halten, können Sie den Thread, der diese Funktion ausführt, Sleep() zum Beispiel:

mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0);
System.Threading.Thread.Sleep(1000);
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);

Der obige Code hält die Maus 1 Sekunde lang gedrückt, es sei denn, der Benutzer drückt die Maustaste und lässt sie los. Stellen Sie außerdem sicher, dass dieser Code nicht im Haupt-UI-Thread ausgeführt wird, da er sonst hängen bleibt..

52
Nasreddine

Sie können sich um die XY-Position bewegen. Beispiel unten:

windows.Forms.Cursor.Position = New System.Drawing.Point(Button1.Location.X + Me.Location.X + 50, Button1.Location.Y + Me.Location.Y + 30)

Zum Klicken können Sie den folgenden Code verwenden:

using System.Runtime.InteropServices;

private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;
[DllImport("user32.dll")]
    private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData,             uint dwExtraInf);
private void btnSet_Click(object sender, EventArgs e)
    {
        int x = Convert.ToInt16(txtX.Text);//set x position 
        int y = Convert.ToInt16(txtY.Text);//set y position 
        Cursor.Position = new Point(x, y);
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//make left button down
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//make left button up
    }

Dank an JOHNYKUTTY

7
Pkplonker