Bewegung des Mauszeigers simulieren
-
meinst Du damit, dass ich zwar den Mauszeiger bewege aber das unterliegende Fenster auf irgendeine Art und Weise nicht aktiv ist?
und dann eben der Klick "ins Leere" geht...
-
Wie klickst du denn!?
greetz, Swordfish
-
Swordfish schrieb:
Wie klickst du denn!?
greetz, Swordfish
Schon klar, wie es gemint ist, aber trotzdem lustisch...
-
der Code schaut bis ungefähr so aus:
for (int i2 = 100; i2<200; i2++) { SetCursorPos(i2, 150); Sleep(10); } //oder dirket mit SetCursorPos(200, 150) mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
-
Nur so ne Idee...
Wofür steht der 2. Parameter? Also die Konstante?
Vielleicht für absolut?Dann klickst du in den Koordinatenursprung...
-
das is echt komisch,
ich hab mal eine 10 Sek Pause eingefügt.J
Jetzt wird also der Curser nach 200,150 bewegt, in der Pause bewege ich die Maus minmal von Hand und warte: dann funktioniert der Klick.SetCursorPos(200, 150); Sleep(10000); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
-
Dann probiers doch einfach mal so:
SetCursorPos(200, 150); mouse_event(MOUSEEVENTF_MOVE, -1, -1, 0, 0); mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
-
Vielleicht liegt es daran, dass mouse_event deprecated ist...
Versuchs mal über SendInput:
#define _WIN32_WINNT 0x0403 #include <windows.h> void MouseClick(int x, int y){ double fScreenWidth = GetSystemMetrics( SM_CXSCREEN )-1; double fScreenHeight = GetSystemMetrics( SM_CYSCREEN )-1; double fx = x*(65535.0f/fScreenWidth); double fy = y*(65535.0f/fScreenHeight); INPUT input; input.type = INPUT_MOUSE; input.mi.dwExtraInfo = 0L; input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN; input.mi.time = 0L; input.mi.mouseData = 0L; input.mi.dx = (long)fx; input.mi.dy = (long)fy; SendInput(1,&input, sizeof(INPUT)); input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTUP; SendInput(1,&input, sizeof(INPUT)); } int main(){ MouseClick(300,300); return 0; }
Gruß,
CSpille
-
Wahnsinn, das scheint zu funktionieren,
ich danke Dir vielmals!
-
Vielleicht liegt es daran, dass mouse_event deprecated ist
Nope, liegt nicht daran, bin ich mir zu 99.9% sicher (hab's selbst schon verwendet, auch unter XP, geht 1A).
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.