Check if key has been pressed
#include <Misc.au3>
_IsPressed ( [$vKey = Default [, $vDLL = Default [, $bCheckModifierKey = False]]] )
If calling this function repeatedly, you should open 'user32.dll' and pass the handle.
Make sure to close the handle at end of script using DllClose().
If you use $vDLL = Default and you don't terminate the AutoIt script and yous stop using _IsPressed(...)
then call _IsPressed() to close the internal used handle.
If $vKey is a string or a $VK_* as defined in "WinAPIvkeysConstants.au3" then
_IsPressed() will return 1 until the key is pressed.
Even brief key presses can result in multiple returns within a loop.
If the code called does not include a blocking function (such as MsgBox) and the user does not require multiple returns,
the script should wait until _IsPressed() returns 0 before continuing (See example 1).
If $vKey is an array then the function returns when the key is pressed,
the return value is 1 if the $vKey[0] is pressed, 2 if the $vKey[1] is pressed, ... (See example 2).
When $bCheckModifierKey is Not True, then the combinaison of a "modifier key" + key will return 0,
and the @extended is set when the modifier key pressed to: 1 = SHIFT, 2 = CTRL, 3 = ALT, 4 = WIN, 5 = right WIN (See example 2).
If $bCheckModifierKey = True then the return occur when the "modifier key" is released.
If $bCheckModifierKey = -1 then the return occur when the "modifier key" is pressed.
| VirtualKey | String | Key |
|---|---|---|
| $VK_LBUTTON | 01 | Left mouse button |
| $VK_RBUTTON | 02 | Right mouse button |
| $VK_CANCEL | 03 | Control-break processing |
| $VK_MBUTTON | 04 | Middle mouse button (three-button mouse) |
| $VK_XBUTTON1 | 05 | X1 mouse button |
| $VK_XBUTTON2 | 06 | X2 mouse button |
| $VK_BACK | 08 | BACKSPACE key |
| $VK_TAB | 09 | TAB key |
| $VK_CLEAR | 0C | CLEAR key |
| $VK_RETURN | 0D | ENTER key |
| $VK_SHIFT | 10 | SHIFT key |
| $VK_CONTROL | 11 | CTRL key |
| $VK_MENU | 12 | ALT key |
| $VK_PAUSE | 13 | PAUSE key |
| $VK_CAPITAL | 14 | CAPS LOCK key |
| $VK_ESCAPE | 1B | ESC key |
| $VK_SPACE | 20 | SPACEBAR |
| $VK_PRIOR | 21 | PAGE UP key |
| $VK_NEXT | 22 | PAGE DOWN key |
| $VK_END | 23 | END key |
| $VK_HOME | 24 | HOME key |
| $VK_LEFT | 25 | LEFT ARROW key |
| $VK_UP | 26 | UP ARROW key |
| $VK_RIGHT | 27 | RIGHT ARROW key |
| $VK_DOWN | 28 | DOWN ARROW key |
| $VK_SELECT | 29 | SELECT key |
| $VK_PRINT | 2A | PRINT key |
| $VK_EXECUTE | 2B | EXECUTE key |
| $VK_SNAPSHOT | 2C | PRINT SCREEN key |
| $VK_INSERT | 2D | INS key |
| $VK_DELETE | 2E | DEL key |
| $VK_HELP | 2F | DEL key |
| $VK_0 - 9 | 30-39 | 0-9 keys |
| $VK_A - Z | 41-5A | A-Z keys |
| $VK_LWIN | 5B | Left Windows key |
| $VK_RWIN | 5C | Right Windows key |
| $VK_APPS | 5D | PopUp Menu Key - Applications key on a Microsoft Natural Keyboard |
| $VK_NUMPAD0 - 9 | 60-69 | Numeric keypad 0 key |
| $VK_MULTIPLY | 6A | Multiply key |
| $VK_ADD | 6B | Add key |
| $VK_SEPARATOR | 6C | Separator key |
| $VK_SUBTRACT | 6D | Subtract key |
| $VK_DECIMAL | 6E | Decimal key |
| $VK_DIVIDE | 6F | Divide key |
| $VK_F1 - 12 | 70 | F1-F12 key |
| $VK_F13 - 16 | 7C-7F | F13 key - F16 key |
| $VK_F17 - 24 | 80H-87H | F17 key - F24 key |
| $VK_NUMLOCK | 90 | NUM LOCK key |
| $VK_SCROLL | 91 | SCROLL LOCK key |
| $VK_LSHIFT | A0 | Left SHIFT key |
| $VK_RSHIFT | A1 | Right SHIFT key |
| $VK_LCONTROL | A2 | Left CONTROL key |
| $VK_RCONTROL | A3 | Right CONTROL key |
| $VK_LMENU | A4 | Left ALT key |
| $VK_RMENU | A5 | Right ALT key |
| $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 | ] |
Search GetAsyncKeyState in MSDN Library.
#include <Misc.au3> #include <MsgBoxConstants.au3> #include <WinAPIvkeysConstants.au3> Local $hDLL= DllOpen ("user32.dll") While 1 If _IsPressed ("10",$hDLL)Then ConsoleWrite ("_IsPressed - Shift Key was pressed. @extended = "&@extended &@CRLF ) ; Wait until key is released. While _IsPressed ("10",$hDLL) Sleep (100) WEnd ConsoleWrite ("_IsPressed - Shift Key was released. @extended = "&@extended &@CRLF ) ElseIf _IsPressed ("1B",$hDLL)Then ConsoleWrite ("_IsPressed - Esc Key was pressed. @extended = "&@extended &@CRLF ) MsgBox ($MB_SYSTEMMODAL,"_IsPressed","The Esc Key was pressed, therefore we will close the application.",3) ExitLoop EndIf Sleep (100) WEnd DllClose ($hDLL)
#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 $iRetAnd @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)
#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