调用AutoItX操作windows窗口

1、安装autoit3:
   默认安装就可以了,
   英文版:http://www.autoitscript.com/autoit3/downloads.shtml
   汉化版:http://www.autoit.net.cn/viewthread.php?tid=6&extra=page%3D1

2、autoit3介绍:
  AutoIt3.exe         AutoIt 主程序
  Au3Info.exe         窗口对象信息获取器
  Au3Check.exe        AutoIt表达式检查器.
  AutoIt.chm          帮助文件
  Examples\Helpfile   包含了帮助文件中引用的例子.
  SciTe\SciTE.exe     编辑器
 
3、相关函数说明:

Run


 运行外部程序.

Run ( "文件名" [, "工作目录" [, 显示标志[, 可选标志]]] )

参数

文件名 可执行文件的完整路径(文件格式为 EXE,BAT,COM 或 PIF).
工作目录 [可选] 工作目录.
显示标志 [可选] 启动程序时的初始状态:
  @SW_HIDE = 隐藏窗口
  @SW_MINIMIZE = 最小化窗口
  @SW_MAXIMIZE = 最大化窗口
可选标志 [可选] 控制不同选项处理父进程/子进程交互.
  1 ($STDIN_CHILD) = 提供一个句柄到子 STDIN 流.
  2 ($STDOUT_CHILD) = 提供一个句柄到子 STDOUT 流.
  4 ($STDERR_CHILD) = 提供一个句柄到子 STDERR 流.
  0x8 ($STDERR_MERGED) = Provides the same handle for STDOUT and STDERR. Implies both $STDOUT_CHILD and $STDERR_CHILD.
  0x10 ($STDIO_INHERIT_PARENT) = Provide the child with the parent's STDIO streams. This flag can not be combined with any other STDIO flag. This flag is only useful when the parent is compiled as a Console application.
  0x10000 ($RUN_CREATE_NEW_CONSOLE) = The child console process should be created with it's own window instead of using the parent's window. This flag is only useful when the parent is compiled as a Console application.

 

2)WinWaitActive


 暂停脚本的执行直至指定窗口被激活(成为活动状态)为止.

WinWaitActive ( "窗口标题", ["窗口文本"], [超时时间] )

参数

窗口标题 目标窗口标题.参考 标题特殊定义.
窗口文本 [可选参数] 目标窗口文本
超时时间 [可选参数] 以秒为单位

返回值

成功: 返回值为 1.
失败: 返回值为 0,说明已超时.

 

3)Send

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

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

参数

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

返回值

None.

4)WinMenuSelectItem


 调用窗口中的某个菜单项目.

WinMenuSelectItem ( "窗口标题", "窗口文本", "菜单项" [, "菜单项" [, "菜单项" [, "菜单项" [, "菜单项" [, "菜单项" [, "菜单项"]]]]]] )

参数

窗口标题 目标窗口标题.参考标题特殊定义.
窗口文本 目标窗口文本.
菜单项 主菜单项的文本.
菜单项 [可选参数] 子菜单项的文本.
菜单项 [可选参数] 子菜单项的文本.
菜单项 [可选参数] 子菜单项的文本.
菜单项 [可选参数] 子菜单项的文本.
菜单项 [可选参数] 子菜单项的文本.
菜单项 [可选参数] 子菜单项的文本.

返回值

成功: 返回值为1.
失败: 返回值为0,说明未发现目标菜单项.

5)ControlSend


 向指定的控件发送字符串.

ControlSend ( "窗口标题", "窗口文本", 控件ID, "字符串" [, 标志] )

参数

窗口标题 目标窗口标题.
窗口文本 目标窗口文本.
控件ID 目标控件.请查看关于控件的说明.
字符串 要发送到控件的字符串.
标志 [可选参数] 更改程序处理"按键"的方式:
  flag = 0 (默认),按键序列中含有的特殊字符比如 + 和 {LEFT} 将被视为 SHIFT 和 左箭头 键.
  flag = 1,按键将按原样发送.

返回值

成功: 返回值为1.
失败: 返回值为0,说明未找到目标窗口/控件.

4、实例:

 1require 'watir'
 2require 'win32ole'  #必须包含该文件
 3
 4def deal_notepad
 5  ai = WIN32OLE.new("AutoItX3.Control")  
 6 
 7  ai.Run("notepad.exe")   #打开记事本
 8  
 9  ai.WinWaitActive("无标题 - 记事本")  #获取记事本窗口对象
10  ai.Send("This is some text.")         #输入文本
11  ai.Send("{ENTER}")                           #模拟键盘输入回车键
12  ai.Send("This is next text.")         #输入文本
13  
14  #全选文字
15  ai.WinMenuSelectItem("无标题 - 记事本","","编辑(&E)","全选(&A)")
16  
17  #选择字体的菜单,打开字体设置窗口
18  ai.WinMenuSelectItem("无标题 - 记事本","","格式(&O)","字体(&F)")
19  
20  #选择字体的菜单,打开字体设置窗口
21  ai.WinWaitActive("字体")
22  ai.ControlSend ("字体","","ComboLBox1","Courier")  #设置字体
23  ai.ControlSend ("字体","","ComboLBox2","斜体")  #设置字形
24  ai.ControlSend ("字体","","ComboLBox3","15")  #设置大小
25  ai.Send("{ENTER}")  #模拟键盘输入回车键
26  
27  ai.WinClose("无标题 - 记事本")   #关闭窗口
28  
29  ai.WinWaitActive("记事本")  #获取保存文件对话框窗口对象
30  
31  ai.Send("!Y")   #模拟输入键盘输入快捷键 alt+Y
32  
33  ai.WinWaitActive("另存为")  #获取另存为对话框窗口对象
34  
35  ai.ControlSend ("另存为","","Edit1","autoit3")  #输入文件名
36  
37  ai.Send("!s")      #模拟输入键盘输入快捷键 alt+S
38end
39
40deal_notepad  #调用函数

 

posted on 2023-05-30 13:30  萧叔  阅读(620)  评论(0)    收藏  举报