AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bewegung des Mausrades in einem externen Spiel auslösen
Thema durchsuchen
Ansicht
Themen-Optionen

Bewegung des Mausrades in einem externen Spiel auslösen

Ein Thema von markbolten · begonnen am 9. Jun 2005 · letzter Beitrag vom 10. Jun 2005
Antwort Antwort
markbolten

Registriert seit: 5. Jun 2005
25 Beiträge
 
#1

Bewegung des Mausrades in einem externen Spiel auslösen

  Alt 9. Jun 2005, 08:41
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
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Bewegung des Mausrades in einem externen Spiel auslösen

  Alt 9. Jun 2005, 11:21
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.
  Mit Zitat antworten Zitat
markbolten

Registriert seit: 5. Jun 2005
25 Beiträge
 
#3

Re: Bewegung des Mausrades in einem externen Spiel auslösen

  Alt 10. Jun 2005, 09:14
Zitat von Robert Marquardt:
Die richtige Funktion ist mouse_event().
mouse_event wurde in XP durch sendinput ersetzt!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Bewegung des Mausrades in einem externen Spiel auslösen

  Alt 10. Jun 2005, 10:08
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.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Bewegung des Mausrades in einem externen Spiel auslösen

  Alt 10. Jun 2005, 11:11
Zitat msdn zu mouse_event:
Zitat:
"Windows NT/2000/XP: This function has been superseded. Use SendInput instead."
Thomas
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Bewegung des Mausrades in einem externen Spiel auslösen

  Alt 10. Jun 2005, 12:34
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz