Mausklick abfragen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von foxm2k.

    hallo olicrash,

    genau wie eine tastaturabfrage kannst du auch die maus abfragen
    Eine oft gestellte Frage:
    Mausklicks systemweit abfangen:
    Private Declare Function GetAsyncKeyState Lib "user32" _
    (ByVal vKey As Long) As Integer
    If GetAsyncKeyState(&H1) Then ... 'links
    If GetAsyncKeyState(&H2) Then ... 'rechts

    oder eben die windows-nachrichten oder einen hook

    gruss

    mikeb69
    In nen timer:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. If GetAsyncKeyState(&H1) Then
    3. MsgBox("links")
    4. ElseIf GetAsyncKeyState(&H2) Then
    5. MsgBox("rechts")
    6. End If
    7. End Sub

    jetzt brauchst du nur noch blockieren das ein Mausklick erst wieder gezählt wird, wenn die Maustaste losgelassen wird. Es geht aber auch kürzer:

    VB.NET-Quellcode

    1. If MouseButtons = Windows.Forms.MouseButtons.Left Then
    2. Msgbox("links")
    3. End If

    kevin89 schrieb:

    bzw

    VB.NET-Quellcode

    1. Private Declare Function GetAsyncKeyState Lib "user32.dll" ( _
    2. ByVal nVirtKey As Long) As Integer
    3. Private Const KeyPressed As Integer = -32767


    Und genau das ist eben nicht gut. Mag das in einem 32bit Kompilat noch keine schwerwiegenden Auswirkungen haben, würde dir ein 64bit Kompilat abstürzen wenns drauf an kommt.

    Viele API-Funktionen wie diese hier erwarten Integer-Parameter mit einer Länge von 32 Bits. In VB 6 entsprach dies dem Typ Long. Ein Integer hatte dort nur 16 Bits.
    Im .NET Framework, ist es so wie es eigentlich sein sollte: der Integer (int in C#) umfasst 32 Bit und ist daher gerade kompatibel zum nativen Integer-Datentyp. Jetzt kommts: Ein Long in .NET hingegen ist 64 Bit lang.

    Gruß,

    f0x