Maus API Mausrad drehen simulation

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Maus API Mausrad drehen simulation

    Ich habe mit Direct Input eine Gamepad Steuerung geschrieben, mit der man WinXp
    bedienen kann, jetzt habe ich das Programm für mein lieblings Billardspiel abgeändert
    (Spiel geht eigentlich nur mit der Maus)
    Das Spiel hat eine ZOOM Funktion die mit dem Mausrad gesteuert wird,
    Wie kann ich eine Mausraddrehung simulieren?(MausTastenKlicks Krieg ich hin)

    Möchte es am liebsten mit API wie z.b.

    Quellcode

    1. Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cbuttons As Integer, ByVal dwExtraInfo As Integer)
    2. Private Const MOUSEEVENTF_LEFTDOWN = &H2
    3. Private Const MOUSEEVENTF_LEFTUP = &H4
    4. Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
    5. Private Const MOUSEEVENTF_MIDDLEUP = &H40
    6. Private Const MOUSEEVENTF_RIGHTDOWN = &H8
    7. Private Const MOUSEEVENTF_RIGHTUP = &H10


    Hab gegoogelt o.e., wie lauten die Constanten für MausradRauf/MausradRunter
    hab eine gefunden(&H20A steht glaube ich für Mausrad Hoch o. Runter?),
    kann damit aber nichts anfangen bzw. bin zu blöd es richtig aufzurufen.

    Danke im vorraus

    Derfuhr schrieb:

    Es muss doch einen simplen API aufruf dafür geben?
    Dann finde ihn und nutze ihn in Deinem Projekt.
    Und dann wäre es noch nett von Dir, wenn Du ihn hier veröffentlichen würdest. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Hab es endlich geschafft!

    Ich habe dieses verfluchte Rätsel endlich gelöst und
    für alle interessierten ein DemoProjekt erstellt. :D

    :!: Wichtig!! Das Scrolling gilt für das objekt @ Cursur.Position :!:
    edit: MausZeiger muss über dem Webbrowser sein wenn ihr F1 o. F2 drückt !!!
    edit2: Focus muss auf Form1

    Quellcode

    1. Public Class Form1
    2. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Integer) As Short
    3. Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cbuttons As Integer, ByVal dwExtraInfo As Integer)
    4. Private Const MOUSEEVENT_WHEEL = &H800 'die entscheidende constante [dwFlag]
    5. Dim SCROLLUP As Integer = 120 'scrollgeschwindigkeit hoch
    6. Dim SCROLLDOWN As Integer = -120 'scrollgeschwindigkeit runter
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. WebBrowser1.Navigate("www.google.de") 'zum testen WebBrowser1.height absichtlich zu klein
    9. End Sub
    10. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    11. If GetAsyncKeyState(Keys.F1) = -32767 Then
    12. mouse_event(MOUSEEVENT_WHEEL, 0, 0, SCROLLUP, 0) 'scrollt objekt @ cursor.position hoch
    13. End If
    14. If GetAsyncKeyState(Keys.F2) = -32767 Then
    15. mouse_event(MOUSEEVENT_WHEEL, 0, 0, SCROLLDOWN, 0) 'scrollt objekt @ cursor.position runter
    16. End If
    17. End Sub
    18. End Class


    Hier die DemoProjektMappe: Maus EVENTS by Derfuhr.7z

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Derfuhr“ ()

    Derfuhr schrieb:

    edit2: Focus muss auf Form1

    Focus muss auf dem WebBrowser sein. :thumbup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!