Problem mit SetCursorPos in 3D Anwendungen
-
Hallo, ich schreibe gerade eine kleine Mod für das Spiel CoD4. Dabei soll der Benutzer beim Einstellen der Optionen auf der Schaltfläche bleiben.
Mein Ansatz ist dieser hier:POINT pt; for(;;) { ::GetCursorPos( &pt ); while(GetAsyncKeyState(VK_LBUTTON)) { SetCursorPos(pt.x, pt.y); } }Das Funktioniert wunderbar, solange ich mich auf der Windows Oberfläche befinde (der Mauszeiger bleibt beim gedrückt lassen der linken Maustaste immer an der gleichen Stelle). Wenn ich aber in das Spiel tabbe, scheint meine exe keine Wirkung zu haben (obwohl ich die linke Maustaste gedrückt halte, kann ich die Maus nach Belieben bewegen).
Wenn ich den code ein wenig abänderefor(;;) { while(GetAsyncKeyState(VK_LBUTTON)) { ::GetCursorPos( &pt ); SetCursorPos(pt.x+1, pt.y); } }funktioniert der code wieder einwandfrei (beim gedrückt lassen der linken Maustaste bewegt sich das bild von CoD4 langsam nach rechts).
Ich kenne mich leider nicht so gut in der WinApi aus. Weis jemand, woran mein Problem liegen könnte?
-
Wenn du in Windows eine Anwendung aktivierst sind alle anderen Oberflächen deaktiviert und reagieren nicht. Man muss sie bevor man mit ihnen "handlen" kann aktivieren. Wenn du jetzt auf CoD 4 umschaltest wird dein kleines Programm deaktiviert und Alle eingaben über stdin z.B. auf dein Programm gehen an CoD 4. Du musst auf den Code von CoD 4 ztugreifen, um eine Wirkung zu fabrizieren. d.h.: Du musst eben einen M0d machen ^^. Du musst versuchen es mit CoD4 zu verbinden oder "einzuschreiben" in den Quellcode.
kann dir leider nicht helfen ich bin Basic C user und fang erst bald mit C++ and und danach mit advanced 3D + sound...
-
öhm, wenn du dich mal mit spieleprogrammierung beschäftigt hättest würdest du wissen das die meisten spiele für die maus/keyboard eingaben DirectInput verwenden..
mit anderen worten, die WinAPI funktionen haben gar keinen einfluss auf die eingabe..
