AutoIt send命令
评论(0) 浏览量(7120)

Send

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

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

 

参数

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

 

返回值

None.

 

注意/说明

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

"Send" 命令的语法跟 ScriptIt 以及 Visual Basic 的 "SendKeys" 命令类似.字符序列将按原文发送,但下列字符除外:

'!'
表示告知 AutoIt 要发送一个 ALT 键击动作,因此语句 Send("This is text!a") 的意思是按序发送按键 "This is text" 然后在按下"ALT+a".

有些程序对大小写字符和 ALT 键相当挑剔,举例来说,"!A" 可能会被认为不同于 "!a";第一个代表 ALT+SHIFT+A,而第二个则代表 ALT+a.如果拿不准的话最好使用小写!

'+'
表示告知 AutoIt 要发送一个 SHIFT 键击动作,因此语句 Send("Hell+o") 的意思是按序发送按键 "HellO".Send("!+a") 表示发送 "ALT+SHIFT+a".

'^'
表示告知 AutoIt 要发送一个 CONTROL 键击动作,因此语句 Send("^!a") 的意思是发送按键 "CTRL+ALT+a".

有些程序对大小写字符和 CTRL 键相当挑剔,举例来说, "^A" 可能会被认为不同于 "^a";第一个代表 CTRL+SHIFT+A,而第二个则代表 CTRL+a. 如果拿不准的话最好使用小写!

'#'
井号将发送一个 Windows 徽标键,因此语句 Send("#r") 将发送 Win+r,这将打开“运行”对话框.

您可以通过设置 SendCapslockMode 从而在 Send 函数开始操作前关闭大小写切换键(大写锁,CAPS LOCK)并在完成操作后恢复.
但是,如果在 Send 函数开始执行的时候用户就按住 Shift 键,那么发送的文本可能会是小写字符.
一个解决办法是在每次执行其它 Send 操作前使用语句 Send("{SHIFTDOWN}{SHIFTUP}").

某些键盘(如捷克语)发送按下SHIFT键时或者CAP LOCK(大写锁定)开启时发送不同的字符(大小写时)可能不工作.

因为AUTOIT在 CAPS LOCK(大写锁定)开启时发送小写字符得到的却是大写(这是常识):

Windows 不允许模拟 "CTRL-ALT-DEL" 组合键
Send 命令(无标志参数) 键击结果 {!} ! {#} # {+} + {^} ^ {{} { {}} } {SPACE} 空格 {ENTER} 主键盘区的 回车键 {ALT} ALT {BACKSPACE} / {BS} 退格 {DELETE} / {DEL} 删除 {UP} 向上箭头 {DOWN} 向下箭头 {LEFT} 向左箭头 {RIGHT} 向右箭头 {HOME} HOME {END} END {ESCAPE} / {ESC} ESC键 {INSERT} / {INS} INS {PGUP} PageUp {PGDN} PageDown {F1} - {F12} 功能键 {TAB} TAB {PRINTSCREEN} Print Screen 键 {LWIN} 左徽标键 {RWIN} 右徽标键 {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} 数字键盘上的 数字键 {NUMPADMULT} 数字键盘上的 乘号 {NUMPADADD} 数字键盘上的 加号 {NUMPADSUB} 数字键盘上的 减号 {NUMPADDIV} 数字键盘上的 除号 {NUMPADDOT} 数字键盘上的 点号 {NUMPADENTER} 数字键盘上的 回车键 {APPSKEY} Windows 应用程序键 {LALT} 左 ALT 键 {RALT} 右 ALT 键 {LCTRL} 右 CTRL 键 {RCTRL} 右 CTRL 键 {LSHIFT} 左 Shift 键 {RSHIFT} 右 Shift 键 {SLEEP} 系统休眠(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_PREV} 仅支持2000/XP:在播放器中选择播放上一个轨道 {MEDIA_STOP} 仅支持2000/XP:使播放器停止播放 {MEDIA_PLAY_PAUSE} 仅支持2000/XP:使播放器播放/暂停 {LAUNCH_MAIL} 仅支持2000/XP:运行邮件客户端程序 {LAUNCH_MEDIA} 仅支持2000/XP:运行播放器Media player {LAUNCH_APP1} 仅支持2000/XP:运行用户程序1 {LAUNCH_APP2} 仅支持2000/XP:运行用户程序2
如果要发送 ASCII 字符 A 则参考下例(相当于 ALT+065,按住ALT键并在数字键盘上顺序按下065)
    Send("{ASC 065}")

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

如果要发送 UNICODE 字符则输入该字符代码,例如下例将发送一个中文字符
    Send("{ASC 2709}") or Send("{ASC 0xA95}")

可参考下例重复发送某按键.
    Send("{DEL 4}") ;连续4次按下 DEL 键
    Send("{S 30}") ;发送30个字符"S"
    Send("+{TAB 4}") ;连续4次按下 SHIFT+TAB

The key will be send at least once even if the count is zero.

如果要按住(保持按下状态)某个按键(通常用于游戏中)
    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 & "}")

如果要用变量来指定要重复发送的 ASCII 字符(比如 A),参考下例:
    $x = Chr(65)
    Send("{" & $x & " 4}")

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

若把标志参数的值设为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 即可) 以获得关于快捷键的完整列表.

When running a script on a remote computer through a program as psexec (www.sysinternals.com) or beyondexec (www.beyondlogic.org) it is necessary, specially when sending strokes to a program launch by the script with a Run function, to use ControlSend or other ControlXXX functions to directly communicate with the control. Send even with Opt("SendAttachMode",1) is not working.
Using the -s mode when submitting can help to have better right on the remote computer.

Opt("SendKeyDelay",...) 修改发送按钮的延迟时间(两次按键之间).
Opt("SendKeyDownDelay",...) 修改按钮按下延迟时间(从释放按键结束).
设置 "SendKeyDelay" 和 "SendKeyDownDelay" 都为0将移除所有按键延迟. This may be required under certain circumstances, for example, when locking the system ("#l") it may be necessary to remove the delays in order to prevent the WIN key from being stuck down.
注:此内容来自AutoIt帮助文档
没有登录不能评论