AutoIt Windows的自动化脚本学习总结

时间:2024.4.20

    本文由penglongke贡献

    doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

    AutoIt Windows 的自动化脚本

    问题: 要求软件开机运行,打开 界面,界面会 问题 现在有 windows2003 上的一个专用软件 X,要求软件开机运行 打开 UI 界面 界面会 要求软件开机运行 弹出窗口要求输入用户和密码登陆,要求能自动输入这些信息登陆进去 弹出窗口要求输入用户和密码登陆 要求能自动输入这些信息登陆进去. 要求能自动输入这些信息登陆进去 1,解决开机自动运行的问题 解决开机自动运行的问题: 解决开机自动运行的问题 建了一个系统账号 admin,设置为开机自动登陆(方法见注 1) 然后把 X 程序的快捷方式放到 admin 的启动菜单下,这样系统启动之后会自动登陆这个账号,然 后打开程序了 2,X 程序自动登陆的问题 程序自动登陆的问题: 由于 X 程序没有自动登录某个用户的设置,所以这个问题称为解决问题的关键: 实际上是要模拟键盘输入用户名密码,然后点"登录"按钮,这要自动完成.即为此文的关键 在 linux 上,可以使用 shell 等脚本语言对命令行的程序进行自动化控制.在 windows 上一般用 批处理来进行自动化的操作.但是如何能够对 GUI 程序进行自动化控制,这方面的信息还比较少. 问了几个高手之后,转转大哥(http://coolerfeng.blog.51cto.com)给我推荐了 AutoIt 这个脚 本工具. 它的官网是这么介绍它的: AutoIt v3 is a freeware BASIC-like .ing language designed for automating the Windows GUI and general .ing. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate task s in a way not possible or reliable with other languages (e.g. VB. and SendKe ys). 译:AutoIt 是一个免费软件,是一个与 BASIC 类似的脚本语言,主要用于自动化 windows 的 GU I 程序和一些常规的脚本.它包括模拟敲某个键,鼠标操作,对窗口和控件的操作,达到自动化的目 的,而用其他的语言或许不可能或者难办到. 看来确实是我想要的东西,对 GUI 程序进行直接的控制,以实现自动化的目的!!!令人兴奋的字眼 ~ 下载安装都很简单,只是提醒一点 只是提醒一点,安装过程中有一步是要选择默认打开脚本文件时是运行还是 只是提醒一点 编辑,对于系统管理员的习惯,当然是选编辑. 然后就是看帮助文档了,此处略过不谈,由于本人任务需要,所以只挑能解决问题的部分看了.下面 来说说具体过程. 为了本地调试方便,我以本机上的 QQ 程序(我的是极速 qq2008 版)来模拟 X 程序,实现 QQ 的 自动输入账号密码登陆.假设账号是 12345,密码是 abcde 打开程序的编辑器,这个编辑器非常不错,具有一般集成开发工具的大部分功能.例如函数自动补 完,函数用法提示,自动缩进,代码块收缩,不同颜色代码等

    我的代码如下(分号表示注释) ; 运行 qq 程序 Run("C:\Program Files\Tencent\QQ\FinePlus.exe") ; 沉睡 sleep(毫秒),这是为了等用户登录的对话框出现 Sleep(5000) ; 等待 QQ 用户登录的对话框 WinWait("QQ 用户登录") ; 在"密码"框中输入密码 ControlSend("QQ 用户登录", "", "[CLASS:Edit; INSTANCE:12]", "abcde") ; 在"用户"框中输入 qq 号 ControlSetText("QQ 用户登录", "", "[CLASS:Edit; INSTANCE:1]", "12345") ; 点击"登录"按钮 ControlClick("QQ 用户登录", "", "[CLASS:Button; INSTANCE:11]") 完成后保存文件,默认的扩展名是 au3 对于函数我当然不能一个个的解释用法,看帮助文件就行了.我只拿一个举例 ControlSend("QQ 用户登录", "", "[CLASS:Edit; INSTANCE:12]", "abcde") 参数"QQ 用户登录"是窗口(window)的 ID 参数"[CLASS:Edit; INSTANCE:12]"是控件(control)的 ID,具体到这里就是 qq 的那个密码 输入框 参数"abcde",就是我要输入的内容 实现的功能看函数名 controlsend 就知道,就是向某个控件(control)发送(send)某个指令,也就 实现了敲密码的效果 具体到 window 和 control 是什么意义?那就要好好看看文档了,或许还需要看一些 window 内 幕的基础知识. 而"QQ 用户登录","[CLASS:Edit; INSTANCE:12]"这样的窗口和控件信息是从哪里得到的呢? 见注 2 然后就可以调试运行了 点菜单上的"Tools" -- "Go" 程序就会运行,运行时,右下角的任务栏会出现一个小图标,运行结束后就消失了.如果程序出了问 题卡在那了,就会图标就会一直出现,表示程序没执行完.这个时候可以点"Tools" -- "Stop exc uting"来退出. 完全没问题之后就可以编译成 exe 文件了.点"Tools" -- "Compile",会在源码所在的目录下生 成同名的.exe 文件. 你双击这个 exe 就可以看到自动打开 qq,自动输入密码用户名,自动点登陆按钮登录的效果了 而实际应用到 X 程序上的时候,发现了一些小问题,当然还是解决了.这里就只说解决要点,有时候 你指定对某个 ID 的控件进行操作,或许并不会应用到相应的控件上去,这或许跟以下几个方面的 因素有关: 1. 由于程序是别人开发的,或许使用了非标准的控件或者修改了这个控件响应的方法,所以对我 们 autoit 的标准函数不起作用.

    2. 当前焦点(Focus)在哪个控件上,例如我的 X 程序我指定某个控件的时候,输入的内容都到一 个控件里面去了,这个怎么办?使用 TAB 键将焦点移到指定的控件上,很简单的,你打开某个窗口 程序,然后按按 TAB 按钮,你就懂了.至于 focus 的问题,也是与 windows 的基本原理相关.

    注 1:(搜自百度) 将某个账号设置为开机自动登录的方法,对注册表做如下修改: 第 1 步:运行注册表编辑器,依次展开[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\W indows NT\CurrentVersion\Winlogon ]分支,然后在右侧窗口双击“DefaultUserName”, 接着输入你的登录用户名。如果没有预设的用户名称,可以在注册表编辑器的菜单栏点选“编辑 →新建→字符串值(s)→DefaultUserName”来添加这个项目,注意要区分大小写字母。 第 2 步:同样在该分支下,在注册表编辑器的右侧窗口中双击“DefaultPassword”,然后在空白 栏内输入你的密码。假如未发现“DefaultPassword”一项,可按上面的步骤来新建该字符串值。 第 3 步:接下来在右侧窗口中双击“AutoAdminLogon”,将数值设置为“1”。假如未发现“Auto AdminLogon”,可按上面的步骤来新建。 注 2: "QQ 用户登录","[CLASS:Edit; INSTANCE:12]"这样的窗口和控件信息是从哪里来的呢. AutoIt 提供了一个工具"AutoIt window info",从开始菜单里面启动它,然后你把你的鼠标移 动到你关心的窗口和控件上,它就会实时显示它们的信息.当你需要捕获某个控件信息的时候,按 下 ctrl+alt+F,就会将当前的信息保持住,你就可以把它们 copy 到你的代码中了.完成后再按一 次 ctrl+alt+F,就恢复到实时捕获的状态,你就可以开始捕捉下一个控件的信息了.下图就是我截 取 qq 的用户名输入框这个控件的信息

    注 3: 很高兴的是,国内也有对这个程序的研究论坛了:

    http://www.autoit.net.cn/

    许久没更新博客了,有时候真的不知道该写什么,说真 的也没太大的冲动写.

    现在经济不景气,个人工作也碰到了稍许困难,真诚的 希望 20## 年大家和我都顺利,幸福~

    Windows 下自动备份的实现

    很久没更新博客了,估计再不来看看的话可能就会长满野草了。^ _ ^ 使用 Lin ux 的人都知道如果要备份一个目录和文件在 Linux 下实现是一件很简单的事, 一两个语句组成的 shell 文件就能实现强大的备份功能(当然包括数据库的备 份)。但在 Windows 下要实现这样的功能可不是一件容易的事。我所说的备份功 能当然是指不借助收费软件的基础下实现全自动的备份。 包括备份文件保存的天 数;备份成功的状态通知等;如果安全等级比较高还需要实现将状态写入日志文 件。 在开始前先交待一下要求:共有三台服务器上的数据需要备份;备份成功与 否需通过邮件的方式通知用户, 备份的数据要求除了在本机保存一份外还需保存 一份到网络硬盘上,本例中的网络硬盘为 192.168.42.6。 一台机器是 win2003 中文企业版+MS SQL2000 企业版的数据库;其中只需 要备份由 SQL 任务备份下来的文件,要求保存最近7天的备份数据。 第二台机器是 win2000 中文企业版+MSDE 数据库;需备份数据库。要求保 存最近7天的数据。 (如果你有所了解 MS 的产品,就会明白 MSDE 是微软的一款 免费的面向桌面的数据库,功能有限,本身不提供数据库的备份功能)所以这些 功能需要我们以命令的方式来完成,估计难点的地方也是在这里。 第三台机器是 win2000 中文企业版;需备份一个文件夹。也是要求备分最近 7天的数据。这里使用 windows 系统自带的 ntbackup.exe 来进行备份操作。 以上是要求,但是俗话说“巧妇难为无米之炊”,仅靠微软的这些工具是很 难实现这样的功能的,所以需要借助一些外来的工具。它们是: 1:blat.exe(主要用来发送邮件提醒) 2:forfiles.exe(winxp/win2003 版,系统自带) 3:forfiles.exe (win2000 版,需下载) 要实现的效果图如下:

    这一张是第一台机器要实现的结果图。

    这一张则是第二台机器的结果图。 下面以第二台机的备份为蓝本来介绍怎样实现功能。 我只是说明一下我认为 比较重要的地方, 如果你对这里的语句有疑问请补习一下 windows 下的命令的用 法。当然,如果你的环境中是用磁带来备份,可以参考以下的文章。 1. How do I perform an NTBackup in Windows 2000, without having to m anually manage the media? (Tip # 2265) [url]http://www.jsiinc.com/sube/tip2200/rh2265.htm[/url]

    2. How can my scheduled Ntbackup react to my failure to insert a tap e in the tape drive? (Tip # 5955) [url]http://www.jsiinc.com/SUBL/tip5900/rh5955.htm[/url] 3. Freeware command-line SMTP mailer (Tip# 4721 ) [url]http://www.jsiinc.com/subj/tip4700/rh4721.htm[/url] 4. Windows 20## NTBackup command line switches (Tip# 2148 ) [url]http://www.jsiinc.com/sube/tip2100/rh2148.htm[/url] 5. What media do I have in my tape library? (Tip# 4540) [url]http://www.jsiinc.com/SUBJ/tip4500/rh4540.htm[/url] @echo off if exist z: net use z: /delete #如果存在已映射的网络盘则删除它 net use z: \\192.168.42.6\exbak pass83 /user:xon\administrator #映射网络盘,其中\\192.168.42.6\exbak 是网络路径;pass83 是密码,xon\ administrator 是用户名(如果是域环境需要带域名,工作组则需加主机名) if exist backup.log del backup.log ipconfig backup.log C:\BackupScript\blat.exe -install 192.168.42.15 mail@126.com #初始化邮件提醒服务,其中 192.168.42.15 是内部邮件服务器,也可以使用外 部,方法类似 if not exist z: (goto Fail) else (goto ok) :Fail echo %date%:%time%Backup of UF DataBase of Day Fail backup.log #将备份时间记入日志文件 echo Network services is not unaccess backup.log C:\BackupScript\blat.exe C:\BackupScript\backup.log -to mail@126.com -s "Day Backup Fail" -u mail@126.com -pw password #将 backup.log 文件发给 mail@126.com 用户,主题是"Day Backup Fail",如 果邮件服务器 SMTP 需要验证则加-u 用户名 -pw 密码 这些参数做验证, 否则无 需这两个参数。 goto end :OK if exist C:\BackupScript\BackupUF_Day.sql del C:\BackupScript\BackupU f_Day.sql #建立 SQL 备份文件,因为 MSDE 不能自动备份 echo use master; C:\BackupScript\BackupUf_Day.sql echo go C:\BackupScript\BackupUf_Day.sql echo Backup database UFDATA_002_2008 C:\BackupScript\BackupUf_Day.sq l #备份数据库 UFDATA_002_2008 echo to disk='d:\backup\UFDATA_002_2008_%date:~4,4%%date:~9,2%%date:~ 12,2%.bak' C:\BackupScript\BackupUf_Day.sql #设定数据库备份路径的保存路径。 其中%date:~4,4%%date:~9,2%%date:~12,2% 这个参数是取当天的日期,win2000 和 winxp 两者格式不完全相同。它的意思是

更多相关推荐:
视频脚本范本

视频脚本

广告脚本范例

情感广告作品篇名:《爱情纯度》服务产品:矿泉水时长:1分40秒

脚本范例2

秋天的图画脚本

分镜头脚本范本

听说刘若英mv分镜头脚本20xx0515179王玲玲

分镜头脚本范本

分镜头脚本范本脚本编撰人:***成员:***

拍摄脚本

作品主题:哎呦喂!爱,有味:爱,always!班级:高一九班小组长:XXX小组成员:XXX拍摄脚本说明一、创作分工二、拍摄脚本备注:

专题片片拍摄脚本范例

二十四载勤立业薪火相继铸辉煌二片头片尾AE特效合计2分钟三相关资料收集四监制人员名单总监制张展宇监制杨中发策划市场部统筹网络中心文案李雪美后期向长玉时间20xx年5月

微电影脚本

剧本

电影、电视分镜头脚本格式

电影电视节目分镜头脚本格式片名镜号每个镜头按顺序的编号景别一般分为全景中景近景特写和显微等技巧包括镜头的运用推拉摇移跟等镜头的组合淡出谈入切换叠化等画面详细写出画面里场景的内容和变化简单的构图等解说按照分镜头画...

分镜头脚本范例

lt在雨中gt分镜头脚本在雨中看见你的身影突然那么悲伤那么疯狂刹那间往事涌上心头时光飞逝掉进了回忆有一次一起去看电影那个故事感人肺腑还记得你流着眼泪在黑暗中我们紧紧相拥在这场淅沥沥哗啦啦纷纷扬的雨中我们还能不能...

标准电视广告脚本格式

电视广告文案的表现特殊性一特殊的形式电视广告文案是广告文案在电视广告中的特殊形式由于电视广告文案在写作过程中除了运用一般的语言文字符号外还必须掌握影视语言运用蒙太奇思维按镜头顺序进行构思这颇似电影文学剧本的写作...

电影电视节目分镜头脚本格式

电影电视节目分镜头脚本格式片名说明镜号每个镜头按顺序的编号景别一般分为全景中景近景特写和显微等技巧包括镜头的运用推拉摇移跟等镜头的组合淡出谈入切换叠化等画面详细写出画面里场景的内容和变化简单的构图等解说按照分镜...

脚本范本(46篇)