![]() |
Bewegung des Mausrades in einem externen Spiel auslösen
Hi,
in kommerziellen Strategiespielen (Siedler 5,Kinder des Nils) ist das zoomen sehr wichtig und wird durch das Mausrad bzw. einer Taste ausgeführt. Aus gesundheitlichen Gründen ist meine Bewegungsfreiheit stark eingeschränkt, dadurch kann ich weder eine Tastatur noch eine normale Maus nutzen. Den Computer bediene ich durch eine Kopfsteuerung, 2 Mausbuttons und eine virtuelle Tastatur. Ich will nun bei gleichzeitigen Drücken der 2 Buttons und vertikale Mausbewegung eine Mausradbewegung auslösen. Um das zu erreichen habe ich eine MouseHook geschrieben, in dieser wird die Message wm_mousewhell mittels Sendinput aufgerufen, sobald das Ereignis - 2 Buttons + Mausbewegung - auftritt. Dieses funktioniert in allen WindowsAnwendungen, nur nicht in Spielen. Aus diversen Forenbeiträgen habe ich erfahren, das Spiele DirectxAnwendungen sind. Wie kann ich eine wm_mousewhell Message in einer externen DirectxAnwendungen aufrufen bzw. wie sende/übermittel ich eine wm_mousewhell Message an ein Spiel, um zoomen zu können ? Eine Lösung bitte mit Beispielcode, da ich keine Erfahrung mit DirectxProgrammierung habe (ich habe Directx 9.0c). Anm.: Ist eine Lösung nur mit neueren Versionen von Delphi als Delphi7 möglich, programmiert mir bitte eine lauffähige Dll. cu |
Re: Bewegung des Mausrades in einem externen Spiel auslösen
Die richtige Funktion ist mouse_event().
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, WheelMove); WheelMove ist ein Integer. Positive Werte bedeuten Rad dreht nach vorn. Es wird in Mausradklicks (Raste am Mausrad) gezaehlt. Eine Raste wird mit WHEEL_DELTA (= 120) in WheelMove gezaehlt. |
Re: Bewegung des Mausrades in einem externen Spiel auslösen
Zitat:
|
Re: Bewegung des Mausrades in einem externen Spiel auslösen
Nein, es wurde nur SendInput ergaenzt. SendInput setzt auf mouse_event und keybd_event auf.
Die Besonderheit ist, das der Datenstrom von SendInput nicht durch andere Inputs (z. B. echte Tastatureingaben) unterbrochen werden kann. |
Re: Bewegung des Mausrades in einem externen Spiel auslösen
Zitat msdn zu mouse_event:
Zitat:
|
Re: Bewegung des Mausrades in einem externen Spiel auslösen
Die Funktion ist aber immer noch vorhanden. Abgesehen davon gibt es SendInput nicht fuer Win 9x.
Nicht zuletzt sollte man erst die einfache Funktion lernen und dann damit SendInput besser verstehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz