_IsPressed mit ß

  • Das ß taucht aber in der Hilfe zu _IsPressed gar nicht auf. Du kannst aber den Scancode "BD" nehmen, dass korreliert auf der engl. Tastatur nämlich mit "-" welches sich auf der selben Stelle befindet.

    Ein kleiner Test bestätigt das auch:

    AutoIt
    #include <Misc.au3>
    
    $hDLL = DllOpen("user32.dll")
    
    While True
        For $i = 1 To 0xFF
            If _IsPressed(Hex($i), $hDLL) Then ConsoleWrite(Hex($i) & @CRLF)
        Next
        Sleep(10)
    WEnd
  • Auf einer engl. Tastatur... er hat aber sicher eine deutsche... und da ist das "-" doch an einer anderen Stelle?!

    Bei mir (deutsche Tastatur) reagiert _IsPressed bei $VK_OEM_8 = 0xDF, wenn ich "ß" drücke.

  • Hiermit kannst du dir die gedrückte Taste via ToolTip anzeigen lassen... Abbruch mit ESC!

    Wenn dein Script eine GUI hat und die Taste(n) nur abgefragt werden sollen, wenn diese aktiv ist, solltest du besser GUISetAccelerators verwenden.

    Einmal editiert, zuletzt von Bitnugger (6. Juni 2018 um 04:16)

  • Moin.

    Meine Erweiterung übersetzt nun auch den HEX-Code in das entsprechende Zeichen auf der Tastatur:

    Immer wenn die deutsche und englische Belegung unterschiedlich sind werden beide angegeben.

    Jetzt fehlt mir nur noch die Auswertung der Modifier links oder rechts. Denn dabei wird immer der Standardcode für den Modifier zusammen mit dem Code des Modifiers spezialisiert auf seine Seite angegeben. Mit anderen Worten die linke SHIFT-Taste spukt immer die "10" und "A0" raus. Der Loop wird aber bereits bei einem Treffer von 10 beendet und deswegen gar nicht bis zu A0 durchgeschritten.

    Hat da jemand eine Idee dazu? Wenn ich einfach die ["10", "SHIFT"] rauswerfe dann wird meistens der HEX-Code angezeigt und nicht "Left SHIFT".

    Gruß, Conrad

    SciTE4AutoIt = 3.7.3.0 AutoIt = 3.3.14.2 AutoItX64 = 0 OS = Win7Pro SP1 OSArch = X64 Language = 0407/german

    H:\...\AutoIt3\SciTE H:\...\AutoIt3 H:\...\AutoIt3\Include (H:\ = Network Drive)

    86223-publicdomain-88x31-png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind.

  • Schau mal hier...

  • Moin. Ich habe über viele Inputs mir mal was anderes gebastelt:

    Das funktioniert auch echt fluffig. Nun passiert aber was merkwürdiges. Ich drücke "ASDF" gleichzeitig und bekomme es auch angezeigt. Drücke ich nun "G" oder "H" dazu tauchen diese bei mir nicht auf. Drücke ich nur das "F" im Wechsel mit "G" und "H" kann ich nun die 2 Buchstaben gleichzeitig sehen, aber niemals "FGH" gleichzeitig. Hat da jemand irgendeine Idee?

    Gruß, Conrad

    SciTE4AutoIt = 3.7.3.0 AutoIt = 3.3.14.2 AutoItX64 = 0 OS = Win7Pro SP1 OSArch = X64 Language = 0407/german

    H:\...\AutoIt3\SciTE H:\...\AutoIt3 H:\...\AutoIt3\Include (H:\ = Network Drive)

    86223-publicdomain-88x31-png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind.

  • Das hängt vermutlich mit deiner Tastatur zusammen. Diese können selten mehr als 3-4 Tasten gleichzeitig erkennen und dabei kommt es manchmal auch auf die Tastenkombination an.

    Das ist dann also je nach Tastatur unterschiedlich.

    Ich würde auch mit Hooks arbeiten, da dann nicht permanent in einer Schleife die Funktion durchläuft sondern von Windows das Keyboard-event getriggered wird, sobald eine Taste gedrückt wird. -> CPU-Auslastung.

  • Mein Tool wird nur dann gestartet, wenn ich den Verdacht einer hängenden Taste habe, da sollte die Schleife nicht das Problem sein.

    Aber mich würde schon interessieren, wie Du das optimieren würdest. Hätte das was mit _WinAPI_SetWindowsHookEx() zu tun?

    SciTE4AutoIt = 3.7.3.0 AutoIt = 3.3.14.2 AutoItX64 = 0 OS = Win7Pro SP1 OSArch = X64 Language = 0407/german

    H:\...\AutoIt3\SciTE H:\...\AutoIt3 H:\...\AutoIt3\Include (H:\ = Network Drive)

    86223-publicdomain-88x31-png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind.

    • Offizieller Beitrag

    Hätte das was mit _WinAPI_SetWindowsHookEx() zu tun?

    Genau. Ist eine interessante Sache. Leider wird das auch für gar nicht gern gesehene Aktivitäten (z.B. Keyloggger) genutzt.

    Deshalb halten wir uns mit Unterstützung zu diesem Thema etwas bedeckt. Mit etwas eigener Anstrengung findet man dann schon zu Lösungen.

    Da Scriptkiddies sich nicht gern anstrengen, reichen unsere vagen Hinweise den Usern eigentlich.

  • Ja, das dachte ich mir auch schon. Ich versuche mal was und frage bei Details dann noch mal nach.

    Gruß, Conrad

    SciTE4AutoIt = 3.7.3.0 AutoIt = 3.3.14.2 AutoItX64 = 0 OS = Win7Pro SP1 OSArch = X64 Language = 0407/german

    H:\...\AutoIt3\SciTE H:\...\AutoIt3 H:\...\AutoIt3\Include (H:\ = Network Drive)

    86223-publicdomain-88x31-png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind.