"_isAnyKeyPressed()"

  • Beim Konsum des heutigen Bonds ist mir eine lustige Idee gekommen: ich möchte meinen Computer bei jedem Tastendruck piepen lassen.
    Theoretisch ginge das sicher mit einer For-SChleife und _isPressed. Das erscheint mir aber stillos.
    Gibt es eine Möglichkeit, das ganze ereignisbasiert zu machen? Heißt: Wenn irgendeine Taste gedrückt wurde (nicht gedrückt ist), dann führe Funktion aus.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Wenn du das als funktion machen willst dann macst du einfach ner schleife die alle tasten mit _ispressed abfrägt und wenn sie das ist, dann spielst du einfach nen beep ab

    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • ist kein Problem, grundsätzlich.
    Leider grenzt das aufgrund der angewandten Methodik sehr an einen Keylogger, da man jede Taste dabei aufzeichnen kann.
    Daher würde ich mal sagen, so ehern dein Einsatzzweck sein mag möchte ich da nicht groß supporten.

    Sorry

    PS: einziger Tip: wie BugFix schon angedeutet hat würde ich im engl. Forum mal nach dem Begriff "hook" suchen ...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ich präsentiere: den Bond-o-mat:

    [autoit]

    #include <WinAPI.au3>
    Global $hHookKeyboard, $pStub_KeyProc
    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)

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

    While 1
    Sleep(10)
    WEnd
    Func OnAutoITExit()
    DllCallbackFree($pStub_KeyProc)
    _WinAPI_UnhookWindowsHookEx($hHookKeyboard)
    EndFunc

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

    Func _KeyProc($nCode, $wParam, $lParam)
    Beep(900,20)
    EndFunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    • Offizieller Beitrag

    Leider grenzt das aufgrund der angewandten Methodik sehr an einen Keylogger, da man jede Taste dabei aufzeichnen kann.


    Muß ich mal klar verneinen.
    Nur aufgrund der Tatsache, dass man mit Autos auch Menschen totfahren kann, sind es keine Mordinstrumente.
    Das hier verwendete (und von mir vorab angesprochene) Bsp. aus der Hilfe bietet keinerlei Anleitung zu illegalen Handlungen. Und wir sollten uns nicht Programmiermöglichkeiten selbst entziehen, nur weil irgendwer das zu anderen Zwecken nutzen könnte. Selbstkasteiung zum Schutze Anderer ? - Nein Danke!
    Wenn jemand wirklich in Richtung Keylogger aktiv werden will, wird er sich spätestens, wenn er keine Hilfe bekommt, einen der zu Hunderten im Netz verügbaren herunterladen.

  • kann das sein das der 2x Beept wenn man eine Taste Drückt


    ich habe das mal umgebaut und man siet das er 2x bei einem Tastendruck _KeyProc aufruft

    [autoit]


    #include <WinAPI.au3>
    Global $hHookKeyboard, $pStub_KeyProc
    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
    $x = ""
    While 1
    Sleep(10)
    WEnd
    Func OnAutoITExit()
    DllCallbackFree($pStub_KeyProc)
    _WinAPI_UnhookWindowsHookEx($hHookKeyboard)
    EndFunc

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

    Func _KeyProc($nCode, $wParam, $lParam)
    $x += 1
    ConsoleWrite($x & @CR)
    EndFunc

    [/autoit]
  • so wirds nur 1x ausgegeben

    [autoit]


    #include <WinAPI.au3>
    Global $hHookKeyboard, $pStub_KeyProc
    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
    Global $m ,$x
    While 1
    Sleep(10)
    WEnd
    Func OnAutoITExit()
    DllCallbackFree($pStub_KeyProc)
    _WinAPI_UnhookWindowsHookEx($hHookKeyboard)
    EndFunc ;==>OnAutoITExit

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

    Func _KeyProc($nCode, $wParam, $lParam)
    If $m = 2 Then
    $x += 1
    ConsoleWrite($x & @CR)
    $m = 0
    EndIf
    $m += 1
    EndFunc ;==>_KeyProc

    [/autoit][autoit][/autoit][autoit][/autoit]
    • Offizieller Beitrag

    Wenn dann so:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    Global $hHookKeyboard, $pStub_KeyProc
    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
    Global $m, $x
    While 1
    Sleep(10)
    WEnd
    Func OnAutoItExit()
    DllCallbackFree($pStub_KeyProc)
    _WinAPI_UnhookWindowsHookEx($hHookKeyboard)
    EndFunc ;==>OnAutoITExit

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

    Func _KeyProc($nCode, $wParam, $lParam)
    If _WinAPI_LoWord($wParam) = 0x100 Then Beep(900, 20)
    EndFunc ;==>_KeyProc

    [/autoit]

    Ich komme unter Windows Seven leider nicht mehr unter den hochgenuss des Tones von dem internen Beeper. Da hilft auch kein Registry Hack :(

    Gruß
    Spider

  • Ich komme unter Windows Seven leider nicht mehr unter den hochgenuss des Tones von dem internen Beeper. Da hilft auch kein Registry Hack :(


    ich bin froh das das nicht mehr von internen Beept

    Das stort sehr bei Rennspielen wo man ja oft 3 Tasten gleichzeitig drückt
    und wenn das geschieht dan beepter und blockt das Keyboard bis man die Tasten losläst (habe deswegen mal 10€ verlohren ;( )

  • Ist denn 0x100, Loslassen oder Drücken?

    • Offizieller Beitrag

    Hallo

    @m-obi: Probier es aus :P
    Falls du es nicht rausbekommst, hier die Lösung:

    Spoiler anzeigen

    Das kann doch wohl nicht wahr sein :P Einfach eine Taste 3 Sekunden drücken, und dann gucken obs beim Loslassen oder beim drücken peept
    Falls du es trotzdem immer noch nicht weißt, hier die Lösung:

    Spoiler anzeigen

    -.-

    Spoiler anzeigen

    ich kann das Spiel lange spielen

    Spoiler anzeigen

    In der Zeit hättest du das schon längst selbst austesten können

    Spoiler anzeigen

    Nagut, hier die Lösung:

    Spoiler anzeigen

    Drücken :thumbup:

    Gruß
    Spider

  • Also bei mir ist es so, wenn ich eine Taste länger gedrückt halte, kommt dauernd der Beep, natürlich mit einer ganz kurzen Pause dazwischen.