基 础 函 数 参 考


Send

发送模拟键击操作到激活窗口.

Send ( "按键" [, 标志] )

参 数

按键 发送的按键.
标志 [可选参数] "按键"的处理方式:
  标志 = 0 (默认), 按键序列中含特殊字符, 比如 + 和 ! 将视为 SHIFT 和 ALT 键.
  标志 = 1, 按键将按原样发送.

返 回 值

None.

备 注

关于使用 Send 函数的更多说明/技巧请查看 附录-按键列表.
AutoIt 可发送所有的 ASCII 与扩展的 ASCII 字符 (0-255), 要发送 UNICODE 字符, 必须使用 "ASC" 选项与发送的字符代码(见下面的 {ASC} ).

"Send" 命令的语法类似 ScriptIt(微软提供的命令行程序) 与 Visual Basic 的 "SendKeys" 命令. 字符按原样发送, 但下列字符除外:

'!'
发送 ALT 键击动作, 因此, Send("This is text!a") 将发送 "This is text" 然后点击 "ALT+a".

有些程序区分字母的大小写和 ALT 键, 即: "!A" 不同于 "!a". "!A" 表示 ALT+SHIFT+A, 而 "!a" 则表示 ALT+a. 如果有疑问最好使用小写!

'+'
发送 SHIFT 键击动作, 因此, Send("Hell+o") 表示发送文本 "HellO". 而 Send("!+a") 表示发送 "ALT+SHIFT+a".

'^'
发送 CONTROL 键击动作, 因此, Send("^!a") 表示发送 "CTRL+ALT+a".

有些程序区分字母的大小写和 CTRL 键,即 "^A" 不同于 "^a". "^A" 表示 CTRL+SHIFT+A, 而 "^a" 表示 CTRL+a. 如果有疑问最好使用小写!

'#'
发送 Windows 徽标键; 因此, Send("#r") 表示发送 Win+r 启动"运行"对话框.

可以设置 SendCapslockMode(选项) 为发送前关闭大小写切换键(Caps Lock), 发送完成后恢复.
但如果在 Send 函数开始执行时, 用户已按住 Shift 键, 文本可能发送为大写字体.
替代方法是执行 Send("{SHIFTDOWN}{SHIFTUP}") 之前执行其它 Send() 操作.

某些键盘(如捷克键盘), 当使用 Shift 键或 CAPS LOCK 键被启用时可以发送不同的字符.
由于 AutoIt 的发送实施大写锁定时, 字符将被切换, 所以它不会工作.
某些特殊键也可以发送,但应在括号内:

Windows 不允许模拟 "CTRL-ALT-DEL" 组合键!


Send 命令 ("标志"值=0) 键击结果
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
{SPACE} 空格
{ENTER} 主键盘回车键
{ALT} ALT
{BACKSPACE} 或 {BS} 退格键(Backspace)
{DELETE} 或 {DEL} 删除键(Delete)
{UP} 上箭头键
{DOWN} 下箭头键
{LEFT} 左箭头键
{RIGHT} 右箭头键
{HOME} HOME 键
{END} END 键
{ESCAPE} 或 {ESC} Esc 键
{INSERT} 或 {INS} Insert 键
{PGUP} PageUp 键
{PGDN} PageDown 键
{F1} - {F12} 功能键
{TAB} TAB 键
{PRINTSCREEN} 屏幕复制键(PrintScrn)
{LWIN} Windows 左徽标键
{RWIN} Windows 右徽标键
{NUMLOCK on} 数字锁定键(NumLock)
{CAPSLOCK off} 大小写切换键(CapsLock)
{SCROLLLOCK toggle} 屏幕上滚锁定键(ScrollLock)
{BREAK} Ctrl+Break 操作
{PAUSE} 暂停(PAUSE)
{NUMPAD0} - {NUMPAD9} 小键盘数字0-9
{NUMPADMULT} 小键盘乘号键
{NUMPADADD} 小键盘加号键
{NUMPADSUB} 小键盘减号键
{NUMPADDIV} 小键盘除号键
{NUMPADDOT} 小键盘句点键
{NUMPADENTER} 小键盘的回车键
{APPSKEY} Windows App key
{LALT} 左 Alt 键
{RALT} 右 Alt 键
{LCTRL} 左 Ctrl 键
{RCTRL} 右 Ctrl 键
{LSHIFT} 左 Shift 键
{RSHIFT} 右 Shift 键
{SLEEP} 电脑休眠键
{ALTDOWN} 按住 ALT 键直到发送 {ALTUP} 完成
{SHIFTDOWN} 按住 SHIFT 键直到发送 {SHIFTUP} 完成
{CTRLDOWN} 按住 CTRL 键直到发送 {CTRLUP} 完成
{LWINDOWN} 按住左徽标键直到发送 {LWINUP} 完成
{RWINDOWN} 按住右徽标键直到发送 {RWINUP} 完成
{ASC nnnn} 发送 ALT+nnnn 组合键
{BROWSER_BACK} 仅支持 2000/XP: 点击浏览器 "后退" 按钮
{BROWSER_FORWARD} 仅支持 2000/XP: 点击浏览器 "向前" 按钮
{BROWSER_REFRESH} 仅支持 2000/XP: 点击浏览器 "刷新" 按钮
{BROWSER_STOP} 仅支持 2000/XP: 点击浏览器 "停止" 按钮
{BROWSER_SEARCH} 仅支持 2000/XP: 点击浏览器 "搜索" 按钮
{BROWSER_FAVORITES} 仅支持 2000/XP: 点击浏览器 "收藏夹" 按钮
{BROWSER_HOME} 仅支持 2000/XP: 运行浏览器并转到主页
{VOLUME_MUTE} 仅支持 2000/XP: 静音
{VOLUME_DOWN} 仅支持 2000/XP: 降低音量
{VOLUME_UP} 仅支持 2000/XP: 提升音量
{MEDIA_NEXT} 仅支持 2000/XP: 选择 media player 播放器下一首曲目
{MEDIA_PREV} 仅支持 2000/XP: 选择 media player 播放器上一首曲目
{MEDIA_STOP} 仅支持 2000/XP: 停止 media player 播放器播放
{MEDIA_PLAY_PAUSE} 仅支持 2000/XP: 播放/暂停 media player 播放器播
{LAUNCH_MAIL} 仅支持 2000/XP: 启动电子邮件程序
{LAUNCH_MEDIA} 仅支持 2000/XP: 启动 media player 播放器
{LAUNCH_APP1} 仅支持 2000/XP: 启动用户程序1
{LAUNCH_APP2} 仅支持 2000/XP: 启动用户程序2

发送 ASCII 字符 A (等同于按住 ALT 键, 并在数字键盘上顺序按下065)
    Send("{ASC 065}")

(使用两位数的 ASCII 码时,必须在前面加一个 0, 否则将使用已过时的 437 代码页).

发送 UNICODE 字符, 则输入字符代码(十进制或十六进制), 例如发送一个汉字
    Send("{ASC 2709}") 或 Send("{ASC 0xA95}")

单个键可以重复发送. 例如.
    Send("{DEL 4}") ;连续点击 DEL 键 4 次
    Send("{S 30}") ;发送 30 个字符 "S"
    Send("+{TAB 4}") ;连续点击 SHIFT+TAB 4 次

必须发送至少一次, 即使计数数为 0.

保持某键按下状态:
    Send("{a down}") ;保持 A 键按下
    Send("{a up}") ;释放 A 键

设置 capslock, numlock 与 scrolllock 键的状态:
    Send("{NumLock on}") ;打开 NumLock 数字锁定键
    Send("{CapsLock off}") ;关闭 CapsLock 大写锁定键
    Send("{ScrollLock toggle}") ;切换 ScrollLock 屏幕滚动键状态

使用变量指定重复发送的次数:
    $n = 4
    Send("+{TAB " & $n & "}")

连续 4 次发送 ASCII 码 A :
    $x = Chr(65)
    Send("{" & $x & " 4}")

大多数笔记本电脑键盘有一个特殊的 Fn 键, 此键无法被模拟.

请注意, 如设置标志参数为 1, 则上述的特殊处理将被禁用.
当你想从变量复制发送文字, 并且希望完全按照原样发送, 则需设置标志参数为 1.

例如, 打开文件夹选项(在控制面板), 并尝试以下方法:


Send("{TAB}") 切换到下一个控件(按钮, 复选框等)
Send("+{TAB}") 切换到上一个控件.
Send("^{TAB}") 切换到下一个标签窗口(在标签对话框)
Send("^+{TAB}") 切换到上一个标签窗口.
Send("{SPACE}") 切换复选框或单击按钮.
Send("{+}") 通常用于选中复选框
Send("{-}") 通常用于取消选中的复选框.
Send("{NumPadMult}") 展开 SysTreeView32 控件内的文件夹.

使用 Alt 键组合访问菜单项. 打开记事本, 并尝试以下方法:
Send("!f") 发送 Alt+f, 打开记事本"文件"菜单. 还可以试试其它的!


Send("{DOWN}") 下移一个菜单.
Send("{UP}") 上移一个菜单.
Send("{LEFT}") 向左移动到新的菜单或展开子菜单.
Send("{RIGHT}") 向右移动到新的菜单或折叠子菜单.
如果对快捷键(Alt+F4, PrintScreen, Ctrl+C 等等)还不太了解,
请参阅 Windows 帮助--点击 Win+F1--查看键盘快捷键的完整列表.

当在远程计算机上运行一个脚本, 必须使用程序 psexec(见 www.sysinternals.com) 或 beyondexec (见 www.beyondlogic.org),
当脚本与运行函数发送键击操作时, 使用 ControlSend 或其他的 ControlXXX 函数, 才能直接与控件沟通,
此时即使设置选项 Opt("SendAttachMode",1) 也是行不通的.
提交时使用 -S 模式, 可以帮助正确地打开远程计算机.

Opt("SendKeyDelay",...) 修改发送键击的延迟时间(两次按键之间).
Opt("SendKeyDownDelay",...) 修改按键按下延迟时间(释放按键之前).
同时设置 "SendKeyDelay" 与 "SendKeyDownDelay" 为 0 时, 将删除所有发送击键的延迟时间.
某种情况下可能需要删除延迟, 例如, 当锁定系统 ("#l") 时,可能有必要删除延迟, 以防止"微软徽标键"被卡住了.

相 关 函 数

SendAttachMode (Option), SendKeepActive, SendKeyDelay (Option), SendKeyDownDelay (Option), ControlSend, BlockInput, HotKeySet, WinMenuSelectItem

函 数 示 例


Send("#r")
WinWaitActive("Run")
Send("notepad.exe{Enter}")
WinWaitActive("[CLASS:Notepad]")
Send("Today's time/date is {F5}")

provider with jb51.net (unicode)