Send |
首页 后退 前进 |
Send 发送模拟键击操作到激活窗口.
Send ( "keys" [, flag = 0] ) 参数
返回值 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".
'^' 发送控制键击动作; Send("^!a") 将会发送 "CTRL+ALT+a".
有些程序区分字母的大小写和 CTRL 键,即 "^A" 不同于 "^a". "^A" 表示 CTRL+SHIFT+A, 而 "^a" 表示 CTRL+a. 如果有疑问最好使用小写!
'#' 发送 Windows 徽标键; Send("#r") 将会发送 Win+r 启动 Run() 对话框.
可以设置 SendCapslockMode(选项) 为发送前关闭大小写切换键(Caps Lock), 发送完成后恢复. 但如果在 Send() 函数开始执行时, 用户已按住 Shift 键, 文本可能发送为大写字体. 替代方法是在执行其他 Send() 操作之前执行 Send("{SHIFTDOWN}{SHIFTUP}").
某些键盘(如捷克键盘), 当使用 Shift 键或 CAPS LOCK 键被启用时可以发送不同的字符. 由于 AutoIt 的发送实施大写锁定时, 字符将被切换, 所以它不会工作. 也可以发送某些特殊键,但应在括号内:
Windows 不允许模拟 "CTRL+ALT+DEL" 组合键!
发送 ASCII 字符 A (等同于按住 ALT 键, 并在数字键盘上顺序按下065): Send("{ASC 065}")
(使用两位数的 ASCII 码时,必须在前面加一个 0, 否则将使用已过时的 437 代码页).
发送 UNICODE 字符, 则输入字符代码(十进制或十六进制), 例如发送一个汉字: Send("{ASC 2709}") or Send("{ASC 0xA95}")
单个键可以重复发送. 例如. Send("{DEL 4}") ;连续点击 DEL 键 4 次 Send("{S 30}") ;发送 30 个 "S" 字符 Send("+{TAB 4}") ;连续点击 SHIFT+TAB 4 次
发送键击次数可以编程设置, 如果次数为 0, 则不发送键击: Send("{M " & $iCount & "}") ;点击 M 键的次数由 $iCount 变量的值决定
保持某键按下状态: 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.
例如, 打开文件夹选项(在控制面板), 并尝试以下方法:
使用 Alt 键组合访问菜单项. 打开记事本, 并尝试以下方法: Send("!f") 发送 Alt+f, 打开记事本"文件"菜单. 还可以试试其它的!
当在远程计算机上运行一个脚本, 必须使用程序 psexec(见 www.sysinternals.com) 或 beyondexec (见 www.beyondlogic.org), 当发送键击动作到脚本中 Run() 函数启动的程序时, 使用 ControlSend() 或其他的 ControlXXX 函数, 才能直接与控件沟通. 此时即使设置选项 Opt("SendAttachMode", 1) 也是行不通的. 提交时使用 -S 模式, 可以帮助正确地打开远程计算机.
Opt("SendKeyDelay",...) 修改发送键击的延迟时间(两次按键之间). Opt("SendKeyDownDelay",...) 修改按键按下延迟时间(释放按键之前). 同时设置 "SendKeyDelay" 与 "SendKeyDownDelay" 为 0 时, 将删除所有发送击键的延迟时间. 某种情况下可能需要删除延迟, 例如, 当锁定系统 ("#l") 时,可能有必要删除延迟, 以防止"微软徽标键"被卡住了.
函数示例 Example() ----------------------------------------
该函数可以通过命令调用 exect 参见: SendAttachMode (Опция), SendKeepActive, SendKeyDelay (Опция), SendKeyDownDelay (Опция), ControlSend, BlockInput, WinMenuSelectItem exect=$var_i=4||Send('+{TAB~~'&$var_i&'}') ;; 按TAB 4次
exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]','''',5)||SendKeepActive(HWnd($var_h)) <FOR> 1 <TO> 10 exect=Send('Hello')||Sleep(500) <NEXT> exect=SendKeepActive('''')||WinClose(HWnd($var_h)) ;; 使用Send()函数运行记事本并保持记事本窗口处于活动状态 © Аверин Андрей для Total Commander Image Averin-And@yandex.ru |