2016-03-22 13 views
0

Ich habe versucht, einen AutoClicker zu machen, der aufzeichnet, wohin ich meine Maus setzte und dann genau koordinierte, aber am Ende klickt es die gleiche Anzahl von Klicks auf der letzten Stelle, die meine Maus war.winapi mouse_event false coords

const int WAIT_INTERVAL = 5; 
const int CLICK_POINTS = 5; 
POINT mouse[CLICK_POINTS]; 
int clicks; 
bool didGetPos; 

for (int i = 1; i <= CLICK_POINTS; i++) 
    { 
     cout << i << " spot" << endl; 
     Sleep(3000); 
     didGetPos = GetCursorPos(&mouse[i - 1]); 

     if (!didGetPos) 
     { 
      break; 
     } 
    } 

    if (didGetPos) 
    { 
     for (int i = 0; i < CLICK_POINTS; i++) 
     { 
      for (int j = 0; j < clicks; j++) 
      { 
       mouse_event(MOUSEEVENTF_LEFTDOWN, mouse[i].x, mouse[i].y, 0, 0); 
       mouse_event(MOUSEEVENTF_LEFTUP, mouse[i].x, mouse[i].y, 0, 0); 
      } 
     } 
    } 
+0

* Diese Funktion wurde ersetzt. Verwenden Sie stattdessen SendInput. * –

+0

Hat nicht geholfen .. immer noch die gleiche letzte Stelle –

+0

Aktualisieren Sie Ihren Code, um Ihre Verwendung von SendInput und vielleicht jemand wird Ihnen helfen. –

Antwort

1

Sie haben das Flag MOUSEEVENTF_ABSOLUTE nicht eingeschlossen. Die documentation sagt:

Die dx und dy Parameter enthalten normalisierte absolute Koordinaten. Wenn sie nicht gesetzt sind, enthalten diese Parameter relative Daten: die Änderung der Position seit der letzten gemeldeten Position. Dieses Flag kann gesetzt oder nicht gesetzt werden, unabhängig davon, welche Art von maus- oder mausähnlichem Gerät, falls vorhanden, mit dem System verbunden ist.

Sie übergeben absolute Koordinaten und müssen daher die MOUSEEVENTF_ABSOLUTE Flag einschließen.

Natürlich sollten Sie die Dokumentation beachten und aufhören, diese ersetzte Funktion zu verwenden. Verwenden Sie SendInput.