Mausklick abfragen?

  • Hallo Zusammen,

    ich habe ein kleines Problem und wohl wohl ein Brett vor dem Kopf.
    Wie kann ich abfragen ob die linke (oder rechte) Maustaste gedrückt oder 'CapsLock' / 'NumLock' und 'Rollen' aktiviert wurde?

    Hintergrund:

    Ich hab eine schnurrlose NoName-Billig-Tastatur - dessen Treiber sich nicht mit Windows Vista versteht.

    Mit dem Treiber unter Windows XP, hatte ich im Tray Symbole für 'Num gedrückt' - 'CapsLock' gedrückt - 'Linke/Rechte Maustaste gedrückt' etc. (Die Tastatur selbst hat keine LEDs für die Zustandsanzeige).

    grüße

    nachtmacher

    (..) und die Welt schaut auf und schreit "Rette uns!" ... und ich flüstere "Nein"

    • Offizieller Beitrag

    Hi,

    [autoit]


    $num = DllCall("user32.dll","long","GetKeyState","long",0x90)
    If $num[0] = 1 Then
    _FunktionWennAktiv()
    Else
    _FunktionWennNICHTAktiv()
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _FunktionWennAktiv()
    MsgBox(0,"A","NumLock ist aktiviert!")
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _FunktionWennNICHTAktiv()
    MsgBox(0,"N","NumLock Ist NICHT aktiviert!")
    EndFunc

    [/autoit]

    So long,

    Mega

  • Klasse, danke für die schnelle Antwort.

    Wenn ich das jetzt richtig verstanden habe:

    Ich frage einfach nur die dll user32.dll nach dem aktuellen Status der Taste 0x90.
    Woher bekomme ich eine Liste der TastenCodes?
    Akutell würde mir fehlen "CapLock" / "Rollen" / "LinkeMausTaste" und "RechteMausTaste" (sofern Maustasten via user32.dll abgefragt werden können).

    Mit Google finde ich zumindest "Rollen" (0x91) und "CapsLock" (0x14).

    in diesem Sinne

    (..) und die Welt schaut auf und schreit "Rette uns!" ... und ich flüstere "Nein"

    • Offizieller Beitrag

    HI,

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $dll = DllOpen("user32.dll")
    Global $num = DllCall("user32.dll", "long", "GetKeyState", "long", 0x90) ; NumPad
    Global $rollen = DllCall("user32.dll", "long", "GetKeyState", "long", 0x91) ; Rollen
    Global $capslock = DllCall("user32.dll", "long", "GetKeyState", "long", 0x14) ; Capslock
    Global $tasten[3] = [$num[0], $rollen[0], $capslock[0]]
    Global $string[3] = ["NumPad", "Rollen", "CapsLock"]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($tasten) - 1
    If $tasten[$i] = 1 Then
    _FunktionWennAktiv($string[$i])
    Else
    _FunktionWennNICHTAktiv($string[$i])
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Func _FunktionWennAktiv($taste)
    MsgBox(64, "A", $taste & " ist aktiviert!")
    EndFunc ;==>_FunktionWennAktiv

    [/autoit] [autoit][/autoit] [autoit]

    Func _FunktionWennNICHTAktiv($taste)
    MsgBox(64, "N", $taste & " ist NICHT aktiviert!")
    EndFunc ;==>_FunktionWennNICHTAktiv

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(25)
    If _IsPressed("01", $dll) Then ToolTip("Linke Maustaste", 0, 0, "MouseClick", 1)
    If _IsPressed("02", $dll) Then ToolTip("Rechte Maustaste", 0, 0, "MouseClick", 1)
    WEnd
    DllClose($dll)

    [/autoit]

    So long,

    Mega