Sends simulated keystrokes to the active window.
Send ( "keys" [, flag = 0] )
keys | The sequence of keys to send. |
flag | [optional] Changes how "keys" is processed: $SEND_DEFAULT (0) = Text contains special characters like + and ! to indicate SHIFT and ALT key-presses (default). $SEND_RAW (1) = keys are sent raw. Constants are defined in "AutoItConstants.au3". |
See the Appendix for some tips on using Send(). AutoIt can send all ASCII and Extended ASCII characters (0-255). To send UNICODE characters you must use the "ASC" option and the code of the character you wish to send (see {ASC} at the bottom of the table below).
The "Send()" command syntax is similar to that of ScriptIt and the Visual Basic "SendKeys" command. Characters are sent as written with the exception of the following characters:
'!'
This tells AutoIt to send an ALT keystroke, therefore Send("This is text!a") would send the keys "This is text" and then press "ALT+a".
N.B. Some programs are very choosy about capital letters and ALT keys, i.e., "!A" is different from "!a". The first says ALT+SHIFT+A, the second is ALT+a. If in doubt, use lowercase!
'+'
This tells AutoIt to send a SHIFT keystroke; therefore, Send("Hell+o") would send the text "HellO". Send("!+a") would send "ALT+SHIFT+a".
'^'
This tells AutoIt to send a CONTROL keystroke; therefore, Send("^!a") would send "CTRL+ALT+a".
N.B. Some programs are very choosy about capital letters and CTRL keys, i.e., "^A" is different from "^a". The first says CTRL+SHIFT+A, the second is CTRL+a. If in doubt, use lowercase!
'#'
The hash now sends a Windows keystroke; therefore, Send("#r") would send Win+r which launches the Run() dialog box.
You can set SendCapslockMode to make CAPS LOCK disabled at the start of a Send() operation and restored upon completion.
However, if a user is holding down the Shift key when a Send() function begins, text may be sent in uppercase.
One workaround is to Send("{SHIFTDOWN}{SHIFTUP}") before the other Send() operations.
Certain keyboards as the Czech keyboard sends different characters when using the Shift Key or with CAPS LOCK enabled while sending a character. Due to the send AutoIt implementation the CAPS LOCKed character will be sent as a Shifted character so it will not work.
Certain special keys can be sent and should be enclosed in braces:
N.B. Windows does not allow the simulation of the "CTRL-ALT-DEL" combination!
Send() Command (if zero flag) | Resulting Keypress |
---|---|
{!} | ! |
{#} | # |
{+} | + |
{^} | ^ |
{{} | { |
{}} | } |
{SPACE} | SPACE |
{ENTER} | ENTER key on the main keyboard |
{ALT} | ALT |
{BACKSPACE} or {BS} | BACKSPACE |
{DELETE} or {DEL} | DELETE |
{UP} | Up arrow |
{DOWN} | Down arrow |
{LEFT} | Left arrow |
{RIGHT} | Right arrow |
{HOME} | HOME |
{END} | END |
{ESCAPE} or {ESC} | ESCAPE |
{INSERT} or {INS} | INS |
{PGUP} | PageUp |
{PGDN} | PageDown |
{F1} - {F12} | Function keys |
{TAB} | TAB |
{PRINTSCREEN} | Print Screen key |
{LWIN} | Left Windows key |
{RWIN} | Right Windows key |
{NUMLOCK on} | NUMLOCK (on/off/toggle) |
{CAPSLOCK off} | CAPSLOCK (on/off/toggle) |
{SCROLLLOCK toggle} | SCROLLLOCK (on/off/toggle) |
{BREAK} | for Ctrl+Break processing |
{PAUSE} | PAUSE |
{NUMPAD0} - {NUMPAD9} | Numpad digits |
{NUMPADMULT} | Numpad Multiply |
{NUMPADADD} | Numpad Add |
{NUMPADSUB} | Numpad Subtract |
{NUMPADDIV} | Numpad Divide |
{NUMPADDOT} | Numpad period |
{NUMPADENTER} | Enter key on the numpad |
{APPSKEY} | Windows App key |
{LALT} | Left ALT key |
{RALT} | Right ALT key |
{LCTRL} | Left CTRL key |
{RCTRL} | Right CTRL key |
{LSHIFT} | Left Shift key |
{RSHIFT} | Right Shift key |
{SLEEP} | Computer SLEEP key |
{ALTDOWN} | Holds the ALT key down until {ALTUP} is sent |
{SHIFTDOWN} | Holds the SHIFT key down until {SHIFTUP} is sent |
{CTRLDOWN} | Holds the CTRL key down until {CTRLUP} is sent |
{LWINDOWN} | Holds the left Windows key down until {LWINUP} is sent |
{RWINDOWN} | Holds the right Windows key down until {RWINUP} is sent |
{ASC nnnn} | Send the ALT+nnnn key combination |
{BROWSER_BACK} | Select the browser "back" button |
{BROWSER_FORWARD} | Select the browser "forward" button |
{BROWSER_REFRESH} | Select the browser "refresh" button |
{BROWSER_STOP} | Select the browser "stop" button |
{BROWSER_SEARCH} | Select the browser "search" button |
{BROWSER_FAVORITES} | Select the browser "favorites" button |
{BROWSER_HOME} | Launch the browser and go to the home page |
{VOLUME_MUTE} | Mute the volume |
{VOLUME_DOWN} | Reduce the volume |
{VOLUME_UP} | Increase the volume |
{MEDIA_NEXT} | Select next track in media player |
{MEDIA_PREV} | Select previous track in media player |
{MEDIA_STOP} | Stop media player |
{MEDIA_PLAY_PAUSE} | Play/pause media player |
{LAUNCH_MAIL} | Launch the email application |
{LAUNCH_MEDIA} | Launch media player |
{LAUNCH_APP1} | Launch user app1 |
{LAUNCH_APP2} | Launch user app2 |
{OEM_102} | Either the angle bracket key or the backslash key on the RT 102-key keyboard |
Send("{TAB}") | Navigate to next control (button, checkbox, etc) |
---|---|
Send("+{TAB}") | Navigate to previous control. |
Send("^{TAB}") | Navigate to next WindowTab (on a Tabbed dialog window) |
Send("^+{TAB}") | Navigate to previous WindowTab. |
Send("{SPACE}") | Can be used to toggle a checkbox or click a button. |
Send("{+}") | Usually checks a checkbox (if it's a "real" checkbox.) |
Send("{-}") | Usually unchecks a checkbox. |
Send("{NumPadMult}") | Recursively expands folders in a SysTreeView32. |
Send("{DOWN}") | Move down a menu. |
---|---|
Send("{UP}") | Move up a menu. |
Send("{LEFT}") | Move leftward to new menu or expand a submenu. |
Send("{RIGHT}") | Move rightward to new menu or collapse a submenu. |
BlockInput, ControlSend, HotKeySet, SendAttachMode (Option), SendKeepActive, SendKeyDelay (Option), SendKeyDownDelay (Option), WinMenuSelectItem
Example()
Func Example()
; Simulate the key combination Win + R to open the Run dialogue window.
Send("#r")
; Wait 10 seconds for the Run dialogue window to appear.
WinWait("Run", "", 10)
; Simulate entering notepad.exe and pressing the 'ENTER' key.
Send("notepad.exe{Enter}")
; Wait 10 seconds for the Notepad window to appear.
Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)
; Simulate entering the following string and pressing the 'F5' key to input the date and time into edit control of Notepad.
Send("Today's time/date is {F5}")
; Close the Notepad window using the handle returned by WinWait.
WinClose($hWnd)
; Now a screen will pop up and ask to save the changes, the classname of the window is called
; "#32770" and simulating the "TAB" key to move to the second button in which the "ENTER" is simulated to not "save the file"
WinWaitActive("[CLASS:#32770]")
Sleep(500)
Send("{TAB}{ENTER}")
EndFunc ;==>Example