Tasten Abhorchen

  • Hallo,
    weiß einer wie ich Tasten abhorchen kann ?
    Ich will gucken welche Taste gedrückt wird um Einstellungen an einem Programm vorzunehmen.
    Also Gui -> "Bitte drücken Sie eine Taste" - "taste x" wird gedrückt, nun kann man mit
    _isPressed () taste x abhorchen.
    Danke fürs lesen.

    Einmal editiert, zuletzt von Rise Against (23. Dezember 2010 um 19:37)

  • und wo ist jetzt die Frage?
    Hasts dir doch schon selbst beantwortet ^^

    oder willst du dass erst die Tasten abgefangen werden die schonmal gedrückt wurden?
    Falls ja dann leg dir einfach ein 2D - Array an wo für jede taste der Code und ein flag gespeichert ist, welches abgibt ob die Taste abgeprüft werden soll

    Einmal editiert, zuletzt von Milla (23. Dezember 2010 um 17:23)

  • Fals du eine Array für _isPressed brauchst, ich hab immer eine auf Lager, da es viele Zahlen und so sind, kannst du gerne benutzen:

    [autoit]

    Dim $aKeys[37][2] = [[30, "0"],[31, "1"],[32, "2"],[33, "3"],[34, "4"],[35, "5"],[36, "6"],[37, "7"],[38, "8"],[39, "9"],[41, "a"],[42, "b"],[43, "c"],[44, "d"],[45, "e"],[46, "f"],[47, "g"],[48, "h"],[49, "i"],["4A", "j"],["4B", "k"],["4C", "l"],["4D", "m"],["4E", "n"],["4F", "o"],[50, "p"],[51, "q"],[52, "r"],[53, "s"],[54, "t"],[55, "u"],[56, "v"],[57, "w"],[58, "x"],[59, "y"],["5A", "z"],[20, " "]]

    [/autoit]
  • Danke.
    Aber ich weiß nicht wie ich das Einfügen soll.

    #include <Misc.au3>

    Dim $aKeys[37][2] = [[30, "0"],[31, "1"],[32, "2"],[33, "3"],[34, "4"],[35, "5"],[36, "6"],[37, "7"],[38, "8"],[39, "9"],[41, "a"],[42, "b"],[43, "c"],[44, "d"],[45, "e"],[46, "f"],[47, "g"],[48, "h"],[49, "i"],["4A", "j"],["4B", "k"],["4C", "l"],["4D", "m"],["4E", "n"],["4F", "o"],[50, "p"],[51, "q"],[52, "r"],[53, "s"],[54, "t"],[55, "u"],[56, "v"],[57, "w"],[58, "x"],[59, "y"],["5A", "z"],[20, " "]]

    While 1
    If _IsPressed ($aKeys) Then
    MsgBox (0,"Diese Taste wurde gedrückt",$aKeys)
    EndIf
    WEnd

    Also ich will ja eben wissen welche taste gedrückt wurde.
    Oder muss ich für jede Taste ein _isPressed machen ? :o

  • So müsste es funktionieren:

    [autoit]

    #include <Misc.au3>

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

    Dim $aKeys[37][2] = [[30, "0"],[31, "1"],[32, "2"],[33, "3"],[34, "4"],[35, "5"],[36, "6"],[37, "7"],[38, "8"],[39, "9"],[41, "a"],[42, "b"],[43, "c"],[44, "d"],[45, "e"],[46, "f"],[47, "g"],[48, "h"],[49, "i"],["4A", "j"],["4B", "k"],["4C", "l"],["4D", "m"],["4E", "n"],["4F", "o"],[50, "p"],[51, "q"],[52, "r"],[53, "s"],[54, "t"],[55, "u"],[56, "v"],[57, "w"],[58, "x"],[59, "y"],["5A", "z"],[20, " "]]
    Global $user32 = DllOpen('user32.dll')

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

    While 1
    For $i = 0 To UBound($aKeys)-1
    If _IsPressed($aKeys[$i][0], $user32) Then
    ConsoleWrite('Du hast "' & $aKeys[$i][1] & '" gedrückt!' & @CRLF)
    Do
    Sleep(10)
    Until Not _IsPressed($aKeys[$i][0], $user32)
    EndIf
    Next
    WEnd

    [/autoit]
  • Zitat

    Oder muss ich für jede Taste ein _isPressed machen ? :o


    Nein einfach in einer For Schleife:

    [autoit]

    #include <Misc.au3>
    Dim $aKeys[37][2] = [[30, "0"],[31, "1"],[32, "2"],[33, "3"],[34, "4"],[35, "5"],[36, "6"],[37, "7"],[38, "8"],[39, "9"],[41, "a"],[42, "b"],[43, "c"],[44, "d"],[45, "e"],[46, "f"],[47, "g"],[48, "h"],[49, "i"],["4A", "j"],["4B", "k"],["4C", "l"],["4D", "m"],["4E", "n"],["4F", "o"],[50, "p"],[51, "q"],[52, "r"],[53, "s"],[54, "t"],[55, "u"],[56, "v"],[57, "w"],[58, "x"],[59, "y"],["5A", "z"],[20, " "]]
    While 1
    For $iX = 0 To UBound($aKeys, 1) - 1
    If _IsPressed($aKeys[$iX][0]) Then
    MsgBox (0,"Taste gedrückt!","Diese Taste wurde gedrückt: " & $aKeys[$iX][1])
    EndIf
    Next
    WEnd

    [/autoit]

    Edit: Schade mal wieder zu langsam und zu lange am antwort schreiben gehangen.

  • Das ist ja die eigentliche Funktion eines Keyloggers 8o

    Ich will natürlich niemandem was vorwerfen! :)

  • Danke, und nein das wird kein Keylogger, jemand will, dass man eine Taste auswählen kann, und diese soll dann verschiedene
    Tasten simulieren, und zum einstellen der Tasten brauche ich das ;D

    bzw Zitat :

    Zitat

    Macro.

  • Na dann ist ja alles klar.
    Bei vielen Usern jedoch ist es eher traurig, dass sie Fassaden verwenden, damit man ihnen Hilfe zu nicht erlaubten Themen gibt!

    PS: RiseAgainst ist geil ! :D

  • Ich empfehle _WinApi_GetKeyboardState (WinAPIEx.au3)

    Damit bekommt man mit nur einem einzigen Aufruf alle Tasten abgefragt.
    Weiters sieht man an den Werten auch, ob zwischen 2 Abfragen eine Taste gedrückt wurde (Toogle).
    Und: diese Funktion lässt sich nicht als Keylogger mißbrauchen, denn sie funktioniert nur bei eigenen Fenstern ;)

    E