Mausklicksimulation
-
Ich habe ein Programm nach der Anleitung der FAQ ( http://www.c-plusplus.net/forum/viewtopic-var-p-is-1180278.html ) programmiert (VS 2008)
Nur irgendwie finde ich nirgends eine Angabe, wie die Parameter der SendInput funktion zu übergeben sind. Welche Maßeinheit ist das, oder ist die Funktion nur nicht ganz Vista-kompatibel?Mein Code:
#include "windows.h" inline void VirtualMouseClick(int iXPos, int iYPos) { INPUT ipSignal; ipSignal.type = INPUT_MOUSE; ipSignal.mi.dx = iXPos; ipSignal.mi.dy = iYPos; ipSignal.mi.mouseData = 0L; ipSignal.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN; ipSignal.mi.time = 0L; ipSignal.mi.dwExtraInfo = 0L; SendInput(1, &ipSignal, sizeof(ipSignal)); ipSignal.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTUP; SendInput(1, &ipSignal, sizeof(ipSignal)); }Aufrufen tu ich zz mit
VirtualMouseClick(60000, 60000);Obwohl ich jetzt einen riesigen Wert von 60000 für beide Koorinaten übergebe, wir die Maus nicht mal in die rechte untere Bildschirmecke gesetzt, sondern ca. 100px zuvor.
Desweiteren wird die Maus nicht quadratisch nach unten gesetzt sondern in Proportion zu Bildschirm, als ob ich einen Prozentwert übergeben würde.Danke schon im Voraus für eure Hilfe!
-
einfacher ist das Ganze mit mouse_event() (http://msdn2.microsoft.com/en-us/library/aa932376.aspx)
-
hast du es schon einmal ohne MOUSEEVENTF_ABSOLUTE in dern flags probiert?
-
Ich habe es jetzt ohne dem ablolute probiert, allesdings:
Die Mausposition wird vom aktuellen Standort weggemessen und nicht von 0|0
Ein Aufruf mit 90,90 setzt die Maus schon in den vierten Bildschirmquadranten.Kann das vllt mal jemand ausprobieren, ob das an meinem pc/software/framework liegt?
Mit mouseevent würde zwar alles funktionieren, allerdings steht in der MSDN, dass die Funktion veraltet ist und keine weitere Unterstützung geplant ist.