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
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.