发布网友 发布时间:2022-05-02 22:50
共1个回答
热心网友 时间:2022-04-18 14:53
用法Send()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中,这一点与Post()函数不同,Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Send()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。实际上,Send()函数把它的各个参数直接传送给Windows的系统调用SendMessage()。在各种C++开发工具的WINDOWS.H文件中可以查到各消息编号。如果应用程序要发送PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用TriggerEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Send()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口
参数:
按键 要发送的按键序列。
标志 [可选参数] 更改程序处理“按键”的方式:
标志 = 0 (默认),按键序列中含有的特殊字符比如 + 和 ! 将被视为 SHIFT 和 ALT 键。
标志 = 1,按键将按原样发送。
返回值
无
注意
AutoIt 可发送所有的 ASCⅡ 码及扩展 ASCⅡ 码字符(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})。
某些特殊按键必须用花括号括住才能发送:
注意,Windows 不允许模拟 CTRL-ALT-DEL 组合键!
Send 命令(无标志参数) 键击结果
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
{SPACE} 空格
{ENTER} 主键盘区的 回车键
{ALT} ALT
{BACKSPACE} 或 {BS} 退格
{DELETE} 或 {DEL} 删除(DELETE)
{UP} 向上箭头
{DOWN} 向下箭头
{LEFT} 向左箭头
{RIGHT} 向右箭头
{HOME} HOME
{END} END
{ESCAPE} 或 {ESC} ESC键
{INSERT} 或 {INS} INS(Insert)
{PGUP} PageUp
{PGDN} PageDown
{F1} - {F12} 功能键
{TAB} TAB
{PRINTSCREEN} Print Screen key
{LWIN} 左徽标键
{RWIN} 右徽标键
{NUMLOCK on} NUMLOCK (on/off/toggle)(开/关/切换)
{CAPSLOCK off} CAPSLOCK (on/off/toggle)(开/关/切换)
{SCROLLLOCK toggle} SCROLLLOCK (on/off/toggle)(开/关/切换)
{CTRLBREAK} Ctrl+Break
{PAUSE} PAUSE
{NUMPAD0} - {NUMPAD9} 数字键盘上的 数字键
{NUMPADMULT} 数字键盘上的 乘号
{NUMPADADD} 数字键盘上的 加号
{NUMPADSUB} 数字键盘上的 减号
{NUMPADDⅣ} 数字键盘上的 除号
{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(计算器)
如果要发送 ASCⅡ 字符 A 则参考下例(相当于 ALT+065,按住ALT键并在数字键盘上顺序按下065)
Send({ASC 065})
(在使用两位数的 ASCⅡ 码时必须在前面加一个 0,否则将使用 437号代码页)。
如果要发送 UNICODE 字符则输入该字符代码,例如下例将发送一个中文字符
Send({ASC 2709})
可参考下例重复发送某按键:
Send({DEL 4}) ;连续4次按下 DEL 键
Send({S 30}) ;发送30个字符“S”
Send(+{TAB 4}) ;连续4次按下 SHIFT+TAB
如果要按住(保持按下状态)某个按键(通常用于游戏中)
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 & })
如果要用变量来指定要重复发送的 ASCⅡ 字符(比如 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}) 切换到右边的菜单或展开子菜单