autoit au3 IT管理员使用指南(二)自动安装软件基础

简介#

上篇介绍了au3的基本操作流程,对于我们要自动安装软件,那么就是要安装某个软件,执行一个程序。

AutoIt 在线文档 (autoitx.com)

一个中文文档,但是命令没有详解。

Functions (autoitscript.com)

官方文档,有命令详解。

Run#

我们可以通过Run命令来执行一个程序,那么我们尝试执行一下搜狗输入法吧。

创建sougou_input目录,下载搜狗输入法安装文件放入该目录。

创建一个au3脚本

复制代码

#下面一行是:申请使用管理员权限,否则安装程序有可能不执行,启动还会提示管理员权限。
#RequireAdmin


#下面一行是:执行当前目录下的sougou_pinyin_14.4c.exe程序,@ScriptDir后面没有反斜线,所以文件名前面加一个。

# @ScriptDir是指当前目录
Run(@ScriptDir & "\sogou_pinyin_14.4c.exe")

复制代码

F5执行,第一个窗口会提示管理员权限,然后就会执行搜狗拼音的安装程序了。

winwait#

自动化程序,不能一直傻傻的下一步,必须要寻找合适的时机才可以继续下一步,那么我们就要处理等待时机。

winwait,窗口等待的意思。

下载了微信安装包,也就他比较大,能经得起时间的考验,不至于秒开。我测试的时候,是已经安装过微信了。

测试代码如下:

执行安装文件后,就立刻执行MsgBox了。甚至安装界面还没出来,就已经执行MsgBox了。

#include<MsgBoxConstants.au3>
#RequireAdmin

Run(@ScriptDir & "\WeChatSetup_3.9.10.exe")

MsgBox($MB_SYSTEMMODAL, "标题", "测试消息")

我们去抓一下微信安装程序启动后是有什么信息。

抓到了Title,Class。

 测试一下分别使用Title,Class暂停脚本,等待Title或Class出现,再执行后面的语句。

测试等待Class出现ConfirmDialog以后,再执行后面的语句。

#include<MsgBoxConstants.au3>
#RequireAdmin

Run(@ScriptDir & "\WeChatSetup_3.9.10.exe")
WinWait("[CLASS:ConfirmDialog]")
MsgBox($MB_SYSTEMMODAL, "标题", "测试消息")

测试抓title,失败,也不知道为什么,以后还是抓class吧。

#include<MsgBoxConstants.au3>
#RequireAdmin

Run(@ScriptDir & "\WeChatSetup_3.9.10.exe")
WinWait("微信安装向导")
MsgBox($MB_SYSTEMMODAL, "标题", "测试消息")

键盘#

send,太多组合键,自己查吧。就是发送键盘活动,安装时,很多快捷键是非常方便的,定位精准。

 Function Send (autoitscript.com)

鼠标#

MouseClick ( "button" [, x, y [, clicks = 1 [, speed = 10]]] )

MouseClick 鼠标点击

button  按哪个键

x y,点击的坐标

clicks ,点击几次,单击,双击

speed ,移动速度,会有人做机器人吧,被人机认证识别。

等待#

sleep(1000)

单位毫秒,1000是1秒。

 结语#

这玩意就跟按键精灵一样啊。不过免费编译exe。

抓点,移动鼠标,点击,键盘输入,等待。

骚活#

为了保障在不同分辨率下工作正常,我做了个函数,保证最终运行时,在不同的分辨率下均可以正确点击。类似于相对移动,但是autoit3中内置的相对移动,我就没正常运行。

写个伪代码吧。

传入$st,

func mov_click($st,$inX,$inY,$nc)

  #软件信息的起始xy

  $dx=300

  $dy=200

  #传入抓到的xy

  $cX=$inX

  $cY=$inY

  #相对位移信息

  $tX=$cX-$dX

  $tY=$cY-$dY

  #计算后目标位置

  $newX=$st[0]+$tX

  $newY=$st[1]+$tY

  MouseClick("left",$newX,$newY,$nc)

endfunc

 

#等待目标窗口出现

$hWnd=WinWait("软件标题")

#获取目标窗口位置大小信息

$st=WinGetPos($hWnd)

#用抓的点($inX,$inY)去进行比较点击$nc次(单双击的意思,1或2)

mov_click($st,$inX,$inY,$nc)

 

作者:上官飞鸿

出处:https://www.cnblogs.com/jackadam/p/18188042

版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。

posted @   上官飞鸿  阅读(646)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-05-12 证书服务(四)opensslCA证书中心
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示