找回密码
 加入
搜索
查看: 6726|回复: 5

[AU3基础] [已解决]controlsend命令求助

[复制链接]
发表于 2012-12-11 15:03:28 | 显示全部楼层 |阅读模式
本帖最后由 hecran 于 2012-12-11 15:47 编辑

Run("notepad.exe","",@SW_MINIMIZE)
WinActivate("[CLASS:Notepad]",@SW_SHOW)
ControlSend("[CLASS:Notepad]", "", "Edit1", "将会发送一些文本到记事本窗口去.")


为什么我这个代码第一次执行的时候无法发送到记事本窗口,而第二次运行的时候直接发送到第一次执行后的记事本窗口????







另求助下  controlsend  怎么发送 tab  上下左右的按键啊
发表于 2012-12-11 15:25:05 | 显示全部楼层
回复 1# hecran


   
Run("notepad.exe","",@SW_MINIMIZE)
WinWait('[CLASS:Notepad]')
WinActivate("[CLASS:Notepad]",@SW_SHOW)
ControlSend("[CLASS:Notepad]", "", "Edit1", "将会发送一些文本到记事本窗口去.")


又是一个不看帮助的人
Send 函数可用的按键列表

快速了解 Send ( "按键" [, 标志] )命令^ Ctrl    ! Alt   + Shift    # Win(徽标键)


AutoIt 可发送所有的 ASCII 码及扩展 ASCII 码字符(0-255),若要发送 UNICODE 编码的字符则必须使用"ASC"选项加上您要发送的字符代码(见下面的 {ASC}).



如果要发送 ASCII 字符 A 则参考下例(相当于 ALT+065,按住ALT键并在数字键盘上顺序按下065)

Send("{ASC 065}")

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

 

如果要发送 UNICODE 字符则输入该字符代码,例如下例将发送一个中文字符.

Send("{ASC 2709}")

可参考下例重复发送某按键:

Send("{DEL 4}") ; 连续按下 DEL 键4次
Send("{S 30}") ; 发送30个字符"S"
Send("+{TAB 4}") ; 连续按下 SHIFT+TAB 4次

 

如果要按住(保持按下状态)某个按键

Send("{a down}") ; 按住按键 A
Send("{a up}") ; 松开按键 A

 

如果要用变量来指定重复发送的次数,参考下例:

Local $iCount = 4
Send("+{TAB " & $iCount & "}")

 

如果要用变量来指定要重复发送的 ASCII 字符(比如 A),参考下例:

Local $iChr = Chr(65)
Send("{" & $iChr & " 4}")

 

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

注意,若把标志参数的值设为1则"按键"参数将被原样发送.如果某些文本是从变量里拷贝而来,而您又希望完全按原样发送这些文本的话,就应该使用这一设置.


Send 是非常有用的一个函数,因为我们可用它来对窗口进行操作而无需使用鼠标.

例如,先打开文件夹选项窗口(位于控制面板),然后请尝试执行下面这些语句: 



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即可)以获得关于快捷键的完整列表.


Send 命令(无标志参数) 按键结果 
{!} ! 
{#} # 
{+} + 
{^} ^ 
{{} { 
{}} } 
{SPACE} 空格 
{ENTER} 主键盘的 回车键 
{ALT} ALT 
{BACKSPACE} 或 {BS} 退格(BACKSPACE) 
{DELETE} 或 {DEL} 删除(DELETE) 
{UP} 向上箭头 
{DOWN} 向下箭头 
{LEFT} 向左箭头 
{RIGHT} 向右箭头 
{HOME} HOME 
{END} END 
{ESCAPE} 或 {ESC} ESC键(ESCAPE) 
{INSERT} or {INS} INS 
{PGUP} PGUP 
{PGDN} PGDN 
{F1} - {F12} 功能键 
{TAB} TAB 
{PRINTSCREEN} PRINTSCR 
{LWIN} 左Windows徽标键 
{RWIN} 右Windows徽标键 
{NUMLOCK} NUMLOCK 
{CAPSLOCK} CAPSLOCK 
{SCROLLLOCK} SCROLLLOCK 
{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} 按下浏览器中的"后退"按钮 
{BROWSER_FORWARD} 按下浏览器中的"前进"按钮 
{BROWSER_REFRESH} 按下浏览器中的"刷新"按钮 
{BROWSER_STOP} 按下浏览器中的"停止"按钮 
{BROWSER_SEARCH} 按下浏览器中的"搜索"按钮 
{BROWSER_FAVORITES} 按下浏览器中的"收藏夹"按钮 
{BROWSER_HOME} 运行浏览器并转到主页 
{VOLUME_MUTE} 切换系统静音状态 
{VOLUME_DOWN} 减小系统音量 
{VOLUME_UP} 增大系统音量 
{MEDIA_NEXT} 在播放器中选择播放下一个轨道(影音媒体) 
{MEDIA_PREV} 在播放器中选择播放上一个轨道 
{MEDIA_STOP} 使播放器停止播放 
{MEDIA_PLAY_PAUSE} 使播放器播放/暂停 
{LAUNCH_MAIL} 运行邮件客户端程序 
{LAUNCH_MEDIA} 运行播放器(Media player) 
{LAUNCH_APP1} 运行用户程序1(我的电脑) 
{LAUNCH_APP2} 运行用户程序2(计算器) 
 楼主| 发表于 2012-12-11 15:46:06 | 显示全部楼层
回复 2# annybaby


    非常感谢  
我看的帮助文档没有这么详细,我一直以为controlsend 和 send 是两个不同的发送方式~~~
 楼主| 发表于 2012-12-11 15:46:32 | 显示全部楼层
回复 2# annybaby


    你那个帮助文档能发我一份吗??
 楼主| 发表于 2012-12-11 15:49:11 | 显示全部楼层
回复 2# annybaby


    另外请问一下  如果我把 RUN 那个参数修改为 @sw_hide   那我用controlsend 还有效果吗
发表于 2012-12-11 17:15:40 | 显示全部楼层
本帖最后由 annybaby 于 2012-12-11 17:18 编辑

回复 3# hecran

    一.他们本来就是两种不同的发送方式,通常情况下,control**系列函数可用于后台发送,当然前台会更可靠,send只能用于前台
二.帮助文档论坛就有,自己去下载'
三.不要问题有没有效果,可不可以这样的问题,你自己动手一试就知道了~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 07:23 , Processed in 0.091409 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表