Mausklick in Vollbild-Anwendung simulieren
-
Hallo,
ich möchte aus einer externen Anwendung in bestimmten Intervallen Mausklicks an ein Spiel senden, d.h. beim spielen soll, während man navigiert, die Maus automatisch linksklicken.
SendInput und mouse_event funktionieren beide auf dem Desktop unproblematisch, jedoch geschieht bei mouse_event im Spiel rein gar nichts und mit SendInput wird die Maus seltsamerweise nur im Spiel versetzt, jedoch nichts geklickt (was auf dem Desktop aber der Fall ist).
Wie kann ich mit einer externen Anwendung (WinAPI) an ein Spiel (DirectX) Mausklicks senden?
MfG
ailos
-
Du könntest doch z.B. eine WM_LMOUSEBUTTONUP an das Fenster senden.
-
SendMessage habe ich gerade ausprobiert und es geht leider nicht - wahrscheinlich weil das für Spiele zu langsam ist.
-
SendInput mal probieren.
-
s.o. ("SendInput und mouse_event funktionieren beide auf dem Desktop unproblematisch, [...]")
-
Der Code ist sehr unspektakulär:
int main() { [..] INPUT ipSignal; ipSignal.type = INPUT_MOUSE; ipSignal.mi.time = 0L; ipSignal.mi.dwExtraInfo = 0L; ipSignal.mi.mouseData = 0L; while(1) { [..] while(i > 0) { ipSignal.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN; SendInput(1, &ipSignal, sizeof(ipSignal)); ipSignal.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP; SendInput(1, &ipSignal, sizeof(ipSignal)); --i; Sleep(1000); } i = DEF_I; } return 0; }
-
Hast du zwischendurch mal überprüft, ob die SendInput()-Aufrufe überhaupt geklappt haben? (die Funktion liefert ihren Rückgabewert nicht nur zum Spaß ;))
-
Ja, SendInput gibt immer 1 zurück (weil immer 1 Input gesandt wird)