SendInput()
-
Hallo,
ich habe es nicht geschaft einen Mausklick an einem bestimmten Punkt zu simulieren. Eigentlich sollte es allein mit der Input Strucktur funktionieren,
aber ich musste GetCursorPos() verwenden.void LeftClick (long x, long y ) { INPUT Input; SetCursorPos( 300, 300); // left down //Input.mi.dx = 300; //= x; //Input.mi.dy = 300; //= y; Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE| MOUSEEVENTF_LEFTDOWN; ::SendInput(1,&Input,sizeof(INPUT)); // left up //Input.mi.dx = 300; //= x; //Input.mi.dy = 300; //= y; Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE| MOUSEEVENTF_LEFTUP; ::SendInput(1,&Input,sizeof(INPUT)); }
Kann mir jemand erklären/ zeigen wie ich das ohne GetCursorPos() hinbekomme.
MfG, Bernd
-
Du musst auch die Position in der INPUT struct angeben.
SetCursorPos zuvor nützt hier gar nichts.
-
Ich glaub ich hab mich falsch ausgedrückt.
Also die Funktion, so wie sie oben steht macht mir einen Mausklick in Bildschirmkoordinaten bei (300,300) und so möchte ich das.Wenn ich allerdings das hier verwende:
INPUT Input; //SetCursorPos( 300, 300); // left down Input.mi.dx = 300; Input.mi.dy = 300; Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE| MOUSEEVENTF_LEFTDOWN; ::SendInput(1,&Input,sizeof(INPUT)); // left up Input.mi.dx = 300; Input.mi.dy = 300; Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE| MOUSEEVENTF_LEFTUP; ::SendInput(1,&Input,sizeof(INPUT));
Dann bekomme ich einen Mausklick direkt unter der Maus anstatt an der entsprechenden Stelle. Das ist es was mich verwirrt.
Bernd
-
So weit ich weiß, geht es ohne SetCursorPos oder vorherigen abruf von MOUSEEVENTF_MOVE nicht.
Die X und Y cordinaten sind nur dazu da damit du
Input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE| MOUSEEVENTF_MOVE ausführen kannst.
Also muss du zuerst die Maus dahin bewegen wo du hin willst und danach klicken, beides auf einmal beinhaltet die Funktion SendInput nicht. Bei mouse_event() ist das selbe.
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual 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.
-
Hast recht gehabt igromanru,
mit dem mouse-move event vorher funktioniert alles
so wie es soll.Vielen Dank für die Hilfe.