Mausklick simulieren
-
Hallo,
versuche mal die Situation darstellen.
Ich will Mausklicks simulieren in einer fremden Anwendung. Verwende dafür SendMessage und WM_LBUTTONDOWN, bzw. WM_LBUTTONUP. Die Simulation auf den gleichen Button funktioniert nur jedes 2 mal. Wenn ich die fremde Anwendung neu starte, funktioniert es auf Anhieb. Oder wenn ich mit der Pfeiltaste den Fokus vom Button wegnehme, dann funktionert der 2 Klick auch.
Habe versucht den Fokus vom Button wegnehmen, mit WM_KILLFOCUS und WM_SETFOCUS. Es funktioniert nicht!
Vielleicht muss ich die Pfeiltaste simulieren, weiß aber nicht wie.
Evt. gibt es vielleicht andere Ideen?Gruß
-
Seiehe SendInput
http://blog.m-ri.de/index.php/2007/12/27/die-unsitte-tastatureingaben-mit-wm_keydown-nachrichten-zu-simulieren/BTW: Das gilt auch für Mausklicks.
-
Danke, werde ausprobieren.
Gruß
-
// Mausklick (links) simulieren 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)); }
-
Aus irgendwelchen Gründen klappt SendInput nicht.
Habe die Vorgängerfunktion verwendet mouse_event, da funktioniert es einwandfrei.
Vielleicht eine dumme Frage (komme nicht aus C++ bereich), was bedeutet 0L? Kann man stattdessen 0 schreiben?Gruß
-
Was klappt nicht?
-
Bei SendInput erfolgt kein Mausklick, obwohl der Rückgabewert der Funktion 1 ist.
Gruß
-
Hallo,
weiß jemand warum SendInput nicht klappt, dafür aber mouse_event (veraltete Funktion)?Gruß