Wie kann ich Mausereignisse aus Code simulieren?

Lesezeit: 2 Minuten

Benutzer-Avatar
Dharma

Ich möchte Mausereignisse mit der Win32-API simulieren. wie kann ich es tun?

Was ich tun möchte, ist das Ereignis auf der grundlegendsten Ebene zu simulieren, der Ebene, auf der das System nur den Ereignistyp und die Koordinaten hat und noch nicht herausgefunden hat, an welches Fenster es es weiterleiten muss.

Ich weiß nicht, ob die Dinge so funktionieren. Auf jeden Fall brauche ich Hilfe dabei. Müsste ich mich auf Fahrerebene einmischen?!

Um meine Anforderungen klar zu machen, möchte ich kein Fenster anvisieren, ich möchte nur, dass das System denkt, dass die Maus vom Benutzer angeklickt oder bewegt wurde. Und ich würde in C programmieren.

Sie suchen die SendInput Funktionmit dem Sie Mausbewegungen und Schaltflächenklicks in Ihrem Code synthetisieren können, indem Sie ein Array von angeben INPUT Strukturen entsprechend Eingangsereignissen.

UINT WINAPI SendInput(
  __in  UINT nInputs,     // number of structures in the pInputs array
  __in  LPINPUT pInputs,  // an array of INPUT structures, representing an event
  __in  int cbSize        // the size, in bytes, of an INPUT structure
);

Beachten Sie jedoch, dass diese Funktion unterliegt Berechtigungsisolierung der Benutzeroberfläche (UIPI)was bedeutet, dass Ihre Anwendung nur Eingaben in Anwendungen einspeisen darf, die auf einer gleichen oder einer niedrigeren Integritätsebene ausgeführt werden.

  • danke für die Erwähnung des integrity level Das Vergeben von Administratorrechten für meine Anwendung hat dieses Problem für mich gelöst 🙂

    – Micha

    23. September 2014 um 10:28 Uhr

Benutzer-Avatar
Chris

Verwenden mouse_event (winuser.h). Der folgende Code bewegt die Maus und führt dann einen Klick an der neuen Position aus. Sie können dies in zwei Zeilen tun, aber das ist ausführlicher.

Beachten Sie, dass X und Y in angegeben sind Mickys0 bis 65535. Diese wird dann auf die aktuelle Auflösung abgebildet, dh 0,0 ist die linke obere Ecke und 65535,65535 die rechte untere Ecke.

mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

  • Entsprechend MSDN-Dokumentation, mouse_event wurde durch SendInput ersetzt. Sie empfehlen stattdessen die Verwendung von SendInput.

    – Winterdrache

    23. September 2014 um 16:30 Uhr


  • Die mouse_event-Funktion scheint unter Windows 10 nicht zu funktionieren, die SendInput-Methode von Cody jedoch.

    – jrh

    25. Januar 2019 um 21:38 Uhr


1300450cookie-checkWie kann ich Mausereignisse aus Code simulieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy