问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

send的原理及用法

发布网友 发布时间: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}) 切换到右边的菜单或展开子菜单

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 电脑卡机动不了怎么办提示按crtlAltDelete 红警路径点怎么用? 新手在租房过程中会遇见哪些常见的骗局? 新西点烘焙职业技能培训学校怎么样 央视2 2月19日中午播《合租陷阱》 欧阳潇潇是谁 春季租房讲究多 租房过程中的5大陷阱 陕西西安雁塔区宏大建功职业培训学校值得信赖吗? 租房5大陷阱,要留心哦! 遇到租房陷阱想维权 要注意什么 初中毕业生可以去的西安的技校有几家 合租找室友遇到室友是男房东靠谱吗 警惕,租房3大陷阱,房子不能租给哪些人 单亲妈妈合租遇渣男被骗走20多万,她遇到了怎样的骗局? 在外租房时,有哪些被坑的经历? 1男3女合租,男子偷偷安装监控,查看监控时后悔不已,你怎么看? 在租房子的时候应该防范哪些骗局? 租客必看的合租陷阱骗局,合租有哪些不安全的地方 租客必看的合租陷阱骗局 谨防受骗! 空气能热水器能倒着放吗 播音主持新闻稿件如何“抱团”? 正当防卫3怎么用ge64加速汽车 正当防卫2 怎么操作 侠盗猎车手4自由城故事 谁有修改器,,像GTA4一样的,,按快捷的有没有 nba2005里怎么晃人啊怎么掏裆 大神们,求助,正当防卫2键盘操作不了 俄文扫描翻译软件 俄文免费翻译器? 我插入麦克风了。它显示当前不可用。驱动是最新的插孔和耳麦都没问题。企鹅54642¥8448可以远程 龚爽娅这个名字全中国有多少人 动漫问题儿童都来自异世界中男主十六夜到底有多强大? 动漫里没说 动漫... 盛世郦都周边环境怎么样?生活便利吗? 求04年到现在的世界足坛著名退役球员 康熙时期四爷党8大核心人物都有谁 在宝鸡看心理医生 推荐几家医院? 完美世界中石昊那一章与十六爷相见 宝鸡哪家医院有心理咨询科室? 历史上真的有十六王爷、庄亲王允禄么? 谁有可以翻译俄文的软件啊? 宝鸡哪里有心里咨询的地方 武胜丰源医院怎么样?