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 tasks in a way not possible or reliable with other languages (e.g. VB. and SendKeys).
译:AutoIt是一个免费软件,是一个与BASIC类似的脚本语言,主要用于自动化windows的GUI程序和一些常规的脚本.它包括模拟敲某个键,鼠标操作,对窗口和控件的操作,达到自动化的目的,而用其他的语言或许不可能或者难办到.
看来确实是我想要的东西,对GUI程序进行直接的控制,以实现自动化的目的!!!令人兴奋的字眼~
 
下载安装都很简单, 只是提醒一点,安装过程中有一步是要选择默认打开脚本文件时是运行还是编辑,对于系统管理员的习惯,当然是选编辑.
然后就是看帮助文档了,此处略过不谈,由于本人任务需要,所以只挑能解决问题的部分看了.下面来说说具体过程.
 
为了本地调试方便,我以本机上的QQ程序(我的是极速qq2008版)来模拟X程序,实现QQ的自动输入账号密码登陆.假设账号是12345,密码是abcde
打开程序的编辑器,这个编辑器非常不错,具有一般集成开发工具的大部分功能.例如函数自动补完,函数用法提示,自动缩进,代码块收缩,不同颜色代码等
clip_image002
 
我的代码如下(分号表示注释)
; 运行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 excuting"来退出.
完全没问题之后就可以编译成exe文件了.点"Tools" -- "Compile",会在源码所在的目录下生成同名的.exe文件.
你双击这个exe就可以看到自动打开qq,自动输入密码用户名,自动点登陆按钮登录的效果了
 
而实际应用到X程序上的时候,发现了一些小问题,当然还是解决了.这里就只说解决要点,有时候你指定对某个ID的控件进行操作,或许并不会应用到相应的控件上去,这或许跟以下几个方面的因素有关:
1. 由于程序是别人开发的,或许使用了非标准的控件或者修改了这个控件响应的方法,所以对我们autoit的标准函数不起作用.
2. 当前焦点(Focus)在哪个控件上,例如我的X程序我指定某个控件的时候,输入的内容都到一个控件里面去了,这个怎么办?使用TAB键将焦点移到指定的控件上,很简单的,你打开某个窗口程序,然后按按TAB按钮,你就懂了.至于focus的问题,也是与windows的基本原理相关.
 
注1:(搜自百度)
将某个账号设置为开机自动登录的方法,对注册表做如下修改:
第1步:运行注册表编辑器,依次展开[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon ]分支,然后在右侧窗口双击“DefaultUserName”,接着输入你的登录用户名。如果没有预设的用户名称,可以在注册表编辑器的菜单栏点选“编辑→新建→字符串值(s)→DefaultUserName”来添加这个项目,注意要区分大小写字母。
第2步:同样在该分支下,在注册表编辑器的右侧窗口中双击“DefaultPassword”,然后在空白栏内输入你的密码。假如未发现“DefaultPassword”一项,可按上面的步骤来新建该字符串值。
第3步:接下来在右侧窗口中双击“AutoAdminLogon”,将数值设置为“1”。假如未发现“AutoAdminLogon”,可按上面的步骤来新建。
 
注2:
"QQ用户登录","[CLASS:Edit; INSTANCE:12]"这样的窗口和控件信息是从哪里来的呢.
AutoIt提供了一个工具"AutoIt window info",从开始菜单里面启动它,然后你把你的鼠标移动到你关心的窗口和控件上,它就会实时显示它们的信息.当你需要捕获某个控件信息的时候,按下ctrl+alt+F,就会将当前的信息保持住,你就可以把它们copy到你的代码中了.完成后再按一次ctrl+alt+F,就恢复到实时捕获的状态,你就可以开始捕捉下一个控件的信息了.下图就是我截取qq的用户名输入框这个控件的信息
clip_image004



本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/124641,如需转载请自行联系原作者
相关文章
|
2月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
138 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
2月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
|
4月前
|
传感器 人工智能 JavaScript
Playwright实战:写UI自动化脚本,速度直接起飞
简介: 测试工程师老王因UI自动化问题深夜奋战,反映出传统测试工具的局限性。微软开源的Playwright凭借智能等待、跨域操作、移动端模拟与网络拦截等强大功能,正迅速取代Selenium,成为新一代自动化测试标准。其稳定高效的设计显著降低维护成本,助力企业构建高质量测试流程。
|
6月前
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
313 1
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
12月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
981 61
自动化微信朋友圈:Python脚本实现自动发布动态
|
11月前
|
Web App开发 人工智能 JSON
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
AutoMouser是一款Chrome扩展程序,能够实时跟踪用户交互行为,并基于OpenAI的GPT模型自动生成Selenium测试代码,简化自动化测试流程。
712 17
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
|
9月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
11月前
|
Web App开发 数据采集 JavaScript
Chrome浏览器实例的TypeScript自动化脚本
Chrome浏览器实例的TypeScript自动化脚本