Funktionreferenz


_IsPressed

Beschreibung anzeigen in

Prüft, ob eine Taste gedrückt wurde

#include <Misc.au3>
_IsPressed ( [$vKey = Default [, $vDLL = Default [, $bCheckModifierKey = False]]] )

Parameter

$vKey [optional] Zu überprüfende Taste (Zeichenfolge), $VK_* wie in „WinAPIvkeysConstants.au3” definiert oder ein Array der zu drückenden Tasten.
Wenn „Default” verwendet wird, wird der interne Handle zur DLL geschlossen. Wenn dieses nicht mehr benötigt wird, sollte man ihn mit _IsPressed() schließen.
$vDLL [optional] Handle zu der DLL (standardmäßig user32.dll)
$bCheckModifierKey [optional] Die Modifikatortasten SHIFT, STRG, ALT oder WIN werden überprüft, um zu vermeiden, dass „Modifikatortaste“ + $vKey nur für $vKey zurückgegeben wird (siehe Bemerkungen) (Standard)

Rückgabewert

>0: wenn die Taste gedrückt wird oder die auf 1 basierende Taste der ausgewählten Taste im Array (siehe Bemerkungen).
0: wenn die Taste nicht gedrückt wird oder kein _IsPressed(...) auf _IsPressed() folgt.

Bemerkungen

Falls diese Funktion wiederholt aufgerufen wird, sollte die Datei 'user32.dll' geöffnet werden und durch ein Handle übergeben werden.
Es ist noch zu beachten, dass das Handle am Ende des Skripts mithilfe der Funktion DllClose() geschlossen wird.
Wenn Sie $vDLL = Default verwenden und das AutoIt-Skript nicht beenden und die Verwendung von _IsPressed(...) einstellen,
rufen Sie dann _IsPressed() auf, um den intern verwendeten Handle zu schließen.

Wenn $vKey eine Zeichenfolge oder ein $VK_* ist, wie in „WinAPIvkeysConstants.au3” definiert, dann
gibt _IsPressed() 1 zurück, bis die Taste gedrückt wird.
    Selbst kurze Tastendrücke können zu mehreren Rückgaben innerhalb einer Schleife führen.
Wenn der aufgerufene Code keine blockierende Funktion (wie MsgBox) enthält und der Benutzer keine Mehrfachrückgaben benötigt,
sollte das Skript warten, bis _IsPressed() 0 zurückgibt, bevor es fortfährt (siehe Beispiel 1)

Wenn $vKey ein Array ist, kehrt die Funktion zurück, wenn die Taste gedrückt wird.
Der Rückgabewert ist 1, wenn $vKey[0] gedrückt wird, 2, wenn $vKey[1] gedrückt wird, ... (siehe Beispiel 2).

Wenn $bCheckModifierKey nicht wahr ist, gibt die Kombination aus einer „Modifikatortaste” + Taste 0 zurück,
und @extended wird gesetzt, wenn die Modifikatortaste gedrückt wird: 1 = SHIFT, 2 = CTRL, 3 = ALT, 4 = WIN, 5 = rechte WIN (siehe Beispiel 2).

Wenn $bCheckModifierKey = True ist, erfolgt die Rückgabe, wenn die „Modifikatortaste” losgelassen wird.
Wenn $bCheckModifierKey = -1 ist, erfolgt die Rückgabe, wenn die „Modifikatortaste” gedrückt wird.

_IsPressed() gibt 1 zurück wenn die Taste losgelassen wurde.
Selbst kurze Tastendrücke können mehrfach innerhalb einer Schleife zurückgegeben werden.
Wenn der verwendete Code keine blockierende Funktion wie z. B. MsgBox enthält und der User keine mehrfachen Returns benötigt, so sollte das Skript warten bis _IsPressed() 0 zurückgibt bevor dieses fortfährt.

VirtualKey String Key
$VK_LBUTTON 01 Linke Maustaste
$VK_RBUTTON 02 Rechte Maustaste
$VK_CANCEL 03 Control-break processing
$VK_MBUTTON 04 Mittlere Maustaste (three-button mouse)
$VK_XBUTTON1 05 X1 Maus-Taste
$VK_XBUTTON2 06 X2 Maus-Taste
$VK_BACK 08 Löschtaste rückwärts
$VK_TAB 09 Tabulator-Taste
$VK_CLEAR 0C Entf-Taste
$VK_RETURN 0D Enter/Return-Taste
$VK_SHIFT 10 Shift/Umschalt/"Großschreib"-Taste
$VK_CONTROL 11 Ctrl/Strg-Taste
$VK_MENU 12 Alt-Taste
$VK_PAUSE 13 Pause-Taste
$VK_CAPITAL 14 Feststelltaste
$VK_ESCAPE 1B Esc-Taste
$VK_SPACE 20 Leertaste
$VK_PRIOR 21 Bild-auf Taste
$VK_NEXT 22 Bild-ab Taste
$VK_END 23 Ende-Taste
$VK_HOME 24 Pos 1-Taste
$VK_LEFT 25 Pfeiltaste nach links
$VK_UP 26 Pfeiltaste nach oben
$VK_RIGHT 27 Pfeiltaste nach rechts
$VK_DOWN 28 Pfeiltaste nach unten
$VK_SELECT 29 Auswahltaste
$VK_PRINT 2A Druck-Taste
$VK_EXECUTE 2B Ausführentaste
$VK_SNAPSHOT 2C Drucktaste
$VK_INSERT 2D Einfg-Taste
$VK_DELETE 2E Entf-Taste
$VK_HELP 2F Hilfe-Taste
$VK_0 - 9 30-39 0-9 Tasten
$VK_A - Z 41-5A A-Z Tasten
$VK_LWIN 5B Linke Windows-Taste
$VK_RWIN 5C Rechte Windows-Taste
$VK_APPS 5D PopUp Menu Key - Anwendungstaste auf einer Microsoft Natural Tastatur
$VK_NUMPAD0 - 9 60-69 rechter Nummerblock Taste 0 - 9
$VK_MULTIPLY 6A rechter Nummerblock Malzeichen
$VK_ADD 6B rechter Nummerblock Pluszeichen
$VK_SEPARATOR 6C Eingabetaste
$VK_SUBTRACT 6D rechter Nummerblock Minuszeichen
$VK_DECIMAL 6E rechter Nummerblock Kommazeichen
$VK_DIVIDE 6F rechter Nummerblock Geteiltzeichen
$VK_F1 - 12 70 F1-F12 Tasten
$VK_F13 - 16 7C-7F F13 Taste - F16 Taste
$VK_F17 - 24 80H-87H F17 Taste - F24 Taste
$VK_NUMLOCK 90 Num-Taste
$VK_SCROLL 91 Rollen-Taste
$VK_LSHIFT A0 linke Shift/Umschalt/Feststelltaste
$VK_RSHIFT A1 rechte Shift/Umschalt/Feststelltaste
$VK_LCONTROL A2 linke Ctrl/Strg-Taste
$VK_RCONTROL A3 rechte Ctrl/Strg-Taste
$VK_LMENU A4 (linke) Alt-Taste
$VK_RMENU A5 (rechte) Alt Gr-Taste
$VK_OEM_1 BA ;
$VK_OEM_PLUS BB =
$VK_OEM_COMMA BC ,
$VK_OEM_MINUS BD -
$VK_OEM_PERIOD BE .
$VK_OEM_2 BF /
$VK_OEM_3 C0 `
$VK_OEM_4 DB [
$VK_OEM_5 DC \
$VK_OEM_6 DD ]

Siehe auch

Suche nach GetAsyncKeyState in der MSDN Bibliothek.

Beispiel

Beispiel 1: _Wird mit $vkey als Zeichenfolge ausgedrückt

#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIvkeysConstants.au3>

Local $hDLL = DllOpen("user32.dll")

While 1
    If _IsPressed("10", $hDLL) Then
        ConsoleWrite("_IsPressed - Shift-Taste wurde gedrückt. @extended = " & @extended & @CRLF)
        ; Wartet bis die Taste wieder losgelassen wurde.
        While _IsPressed("10", $hDLL)
            Sleep(100)
        WEnd
        ConsoleWrite("_IsPressed - Shift-Taste wurde losgelassen. @extended = " & @extended & @CRLF)
    ElseIf _IsPressed("1B", $hDLL) Then
        ConsoleWrite("_IsPressed - Esc-Taste wurde gedrückt. @extended = " & @extended & @CRLF)
        MsgBox($MB_SYSTEMMODAL, "_IsPressed", "Da Esc-Taste gedrückt wurde wird die Anwendung beendet.", 3)
        ExitLoop
    EndIf
    Sleep(100)
WEnd

DllClose($hDLL)

Example 2 : _IsPressed using $vkey as array with modifier key checking

#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIvkeysConstants.au3>

Local $asModifierKeys[6] = [0, "VK_SHIFT", "VK_CONTROL", "VK_MENU", "VK_LWIN", "VK_RWIN"]

Local $aKeys[3] = [$VK_ESCAPE, $VK_LBUTTON, $VK_TAB]
While 1
    Local $iRet = _IsPressed($aKeys, Default, True) ; Check modifier
    If Not $iRet And @extended Then ConsoleWrite("The modifier key " & $asModifierKeys[@extended] & " has been pressed. @extended = " & @extended & @CRLF)

    Local $sKey
    Switch $iRet
        Case 1 ; Keyboard ESC
            $sKey = "{ESCAPE}"
            ExitLoop

        Case 2 ; MouseClick Left
            $sKey = "{LBUTTON}"
            ExitLoop

        Case 3 ; Keyboard Tab
            $sKey = "{TAB}"
            ExitLoop

    EndSwitch

    Sleep(100)
WEnd

_IsPressed() ; to DLLClose the default Dll created by the previous _IsPressed_(...)

Send("^z") ; to avoid change in the Scite Window

ConsoleWrite("The key " & $sKey & " has been pressed." & @CRLF)
MsgBox($MB_SYSTEMMODAL, "Result", "The key " & $sKey & " has been pressed.", 2)

Example 3 : _Ispressed using $vkey as integer with modifier key checking

#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIvkeysConstants.au3>

Example()
Func Example()
    While 1
        If _IsPressed($VK_F2, Default, True) Then
            ConsoleWrite("_IsPressed - F2 (without any modifier keys pressed) was pressed." & @CRLF)
            ; Wait until key is released.
            While _IsPressed($VK_F2, Default, True)
                Sleep(100)
            WEnd
            ConsoleWrite("_IsPressed - F2 (without any modifier keys pressed) was released." & @CRLF)
        ElseIf _IsPressed($VK_ESCAPE) Then
            MsgBox($MB_SYSTEMMODAL, "_IsPressed", "The Esc Key was pressed, therefore we will close the application.", 3)
            ExitLoop
        EndIf
        Sleep(100)
    WEnd

    _IsPressed() ; to release the internal handle created by previous call to _IsPressed(...)

EndFunc   ;==>Example