找回密码
 加入
搜索
查看: 103988|回复: 58

[原创] AU3编写的强大的CommandRunner支持绝大部分常用实用操作!

 火... [复制链接]
发表于 2010-6-22 21:40:07 | 显示全部楼层 |阅读模式
本帖最后由 honylan 于 2010-6-23 02:35 编辑

本程序编写时,引用、借鉴、使用了以下UDF,感谢原创作者!
-------------------------------------------------------------------------------------------------------------------------
  音量控制:[SoundGetSetQuery.au3],本人在英文官网搜集了许多相关UDF,但没有一个同时支持HD系列声卡和普通AC'97声卡的MIC音量
      此UDF,本人修改了关于麦克风设置的部分细节,以便同时支持HD系列和普通AC'97规范的声卡麦克风音量调节。
      本程序的音量控制函数,在RTL88X系列的HD声卡下测试通过,在RTL AC97声卡下测试通过,
   _WMI_SetNetworkAdapterInfo 函数,来自本论坛, 本人修改加入了返回值与错误处理,避免发生错误时报错退出
  _SetWallpaper函数,_ChangeScreenRes函数
-----------------------------------------------------------------------------------------------------------------------------
程序功能
    AU3本身在开发之初就被定义为“自动化操作”脚本,只因加入了WMI、API、COM等支持,所以支持的功能更强大了,但本质定位仍是自动化、简化用户操作、批量处理工作。
    这个程序也许是对AU3本身的定位一个最好的解释!
    这个程序秉承了AU3的理念,它是一个脚本执行器,可以让你在不是特别复杂的情况下,写脚本即可执行,而不必使用AU3重新写一个专门的程序编译后使用!
    目前,这个程序对判断的支持已经完美实现了编程语言中的IF Else EndIf无限级嵌套使用!
    准备完善的工作:将For  while等循环结构加入,当然,AU3的循环中少不了数组的支持,而数组也少不了字符串操作的支持,因此这三个项目,有时间将尝试引入本程序
    文件读写的支持,在考虑要不要加入,因为毕竟很少用到,即使要使用,也完全可以变相达到目的!
    比如说“执行DOS”这一条命令即可实现许多功能,只要你对批处理熟悉。要写一个文件很简单嘛: echo [config] >C:\a.ini。
    echo 窗口高度=500 >>C:\a.ini这就写入了一个配置文件了。
    dos可操作的东东有很多,善于利用变通的方法达到软件实现不了的功能才像样嘛!

    配置文件指定脚本,执行相关命令! 本程序集成了大部分最常用的Au3内置函数,直接以配置文件指定的形式运行。
方便一些并不是特别复杂的软件,也要重新开发的麻烦。
    也许这个功能说不太清楚,不过看配置就明白啦,哈哈!
==========[   配置说明   ]========================================================
程序:Au3CmdRunner.exe
配置文件:程序目录下的 Hcfg.ini或由命令行指定
命令行参数:/ini=[ini配置文件路径] /title=[GUI标题] /Mode=[Btn/Win/Hide] /Nolog
加载配置优先级:命令行参数优先,命令行为空时,读取默认配置文件,基本配置未指定时,使用程序内置默认参数。
配置文件基本设置:---------->
     [Config]
     运行模式=Win [<本项为默认>普通窗口模式,该模式可供调试,实时反馈执行结果] Btn [按钮模式]   Hide [静默执行模式]
     窗口标题=      [本标题仅供Win和Btn模式使用]
     窗口宽度=    [最大值1000,最小值300]
     窗口高度=    [最大值800,最小值300]
     关闭日志=    [0或1<默认为0>]
基本配置结束------------------------------>
Win窗口模式截图:

Btn按钮模式截图:


----------------------------扩展模式-------------
在Hide模式下,可以使用Tooltip来显示一段文本,然后注册各个命令集的热键,通过热键来响应命令集
[Command]
ToolTip=文本:{按Alt +F1 执行 HD麦克风调节, 按Alt + F2 某某某}位置:{居中}
注册热键=热键:[!{F1}]命令集:[HD麦克风调节]
注册热键=热键:[!{F2}]命令集:[命令集]

------------------------------------------------------------------------------------------------------
脚本说明:Win和Hide模式下执行[Command]命令集.
所有命令中,带默认值的参数均为可选参数,使用时,可以省略,例如“ 关闭窗口=标题:{记事本}"
所有命令参数中,带{}的数据,均支持变量,变量格式:<@变量名>
命令返回值:除判断命令之外,所有程序返回值一律为1或0,代表成功或失败,个别命令始终返回1(像关闭文字窗口,tooltip等)
返回值用变量<@执行结果>表示,执行消息用<@执行消息>表示

------------------------------------------------------------------------------------------------------
========>>>>宏、变量支持列表
宏与变量在所有命令行参数带{}中使用均有效
<@CRLF>换行
<@IpAddress>第一个有效的IP地址
<@ComputerName>
<@MACAddress>
<@分辨率>返回格式1024x768
<@刷新率>返回数字
<@色深>返回数字
<@执行结果>返回上条命令执行结果,成功1,失败0
<@执行消息>返回回执消息
<@error>根据命令不同返回值不等,多为1或0
<@TempDir>
<@ScriptDir>
<@WindowsDir>
<@ProgramFilesDir>
<@自定义变量>
设置变量=变量名:{}变量值:{}
;如果已经存在变量,则更新变量值,反之则创建变量
---------------------------------------------------------------
===========>>>判断语句,支持无限级嵌套使用,与AU3中的If Else EndIf用法相同,可省略Else
如果=参数:{}运算符:{>/</<>/=/in}条件值:{}
;说明:当运算符为in/<>/=时,多个值以|分隔,例:如果=参数:{<@执行结果>}运算符:{=}条件值:{1},代表,如果上次命令执行返回值=1,即如果命令成功
运算符:=和in的不同:in使用stringinstr命令,即,当条件值包含参数时即返回1,而=则需要完全相同才返回1,例如:参数123 in abc|123456返回1,因为123456包含123, 而 参数:123 = abc|123456 则返回0, 123不等于abc,也不等于123456

---------命令
否则=

---------命令

结束判断=
--------------------------------------以上为正常基本判断结构,下面是简易判断
如果成功=执行:{命令集名称/跳过命令:5(代表跳过下面的5条命令)}否则:{命令集名称/跳过命令:5(代表跳过下面的5条命令)}
==========>>>进程命令
运行=程序:{路径}参数:{无<默认>}显示:{隐藏/显示<默认>}标志:{open<默认>/print/edit/properties}等待运行完毕:{0<默认>/1}  [本命令等于合并了AU3中的,ShellExeCute和ShellExeCuteWait]
执行=程序:{}显示:{隐藏/最大/最小/正常<默认>}等待执行完毕:{0<默认>/1}     [本命令等于合并了Run和RunWait]
执行dos=命令:{dos命令}显示窗口:{0隐藏<默认>/1显示}
结束进程=进程:{名称或PID}
等待进程出现=进程:{进程名}超时:{默认50秒}
进程存在=进程:{}PID变量:{PID<默认>}     [返回0或1,如果为1则会创建变量<@PID>,保存了PID值,可供其它命令使用]
=============>>>交互与提示
输入框=标题:{}提示:{<默认空>}数据:{初始数据<默认空>}密码:{密码替换符<默认无>}变量:{保存用户输入的变量<默认UserInput>}
对话框=标题:{标题<默认为:操作结果>}文本:{默认为<@执行消息>}类型:{/确定<默认>/是否/确定和取消}
;如果参数为空则显示命令执行结果。    返回值:如果用户点击了确定或是,则返回1,否则(超时/点击取消/否)返回0
ToolTip=文本:{内容/执行结果}位置:{居中、居中顶端,左上(默认)}
;文本留空为清除提示
文字窗口=标题:{标题}文本:{内容}
关闭文字窗口=
创建进度条=标题:{标题}主文本:{内容}副文本:{内容}
设置进度条=进度:{0-100}副文本:{内容}主文本:{内容}
关闭进度条=
===========>>>窗口控件操作
;以下窗口控件操作,窗口标题为必填,文本:{}代表窗口文本,,操作控件时,控件必填,窗口标题和控件名支持高级定位[classNN:;Text:]
-------------------------------------
激活窗口=标题:{标题}文本:{<默认无>}
关闭窗口=标题:{标题}文本:{<默认无>}
等待窗口出现=标题:{标题}文本:{<默认无>}超时:{默认30秒}
等待窗口激活=标题:{标题}文本:{<默认无>}超时:{默认30秒}
等待窗口关闭=标题:{标题}文本:{<默认无>}超时:{默认30秒}
点击菜单项=标题:{标题}文本:{<默认无>}菜单:{菜单}项1:{<可选>}项2:{<可选>}项3:{<可选>}项4:{<可选>}
设置窗口状态=标题:{标题}文本:{<默认无>}状态:{显示<默认>/隐藏/可用/禁用}
点击控件=标题:{标题}文本:{<默认无>}控件:{}
修改控件文本=标题:{标题}文本:{<默认无>}控件:{}字符:{<默认无>}
设置焦点=标题:{标题}文本:{}控件:{}
控件发送字符=标题:{标题}文本:{}控件:{}字符:{}
ControlCommand=标题:{标题}文本:{}控件:{}命令:{}选项:{}
获取坐标=标题:{标题}    [可选参数]   文本:{}     控件:{获取控件坐标时控件名}   相对:{屏幕/窗口<默认>}修正X:{+/-}修正Y:{+/-}X变量:{}Y变量:{}
;可获取窗口或控件的坐标,若要获取窗口,请将控件留空,如果是获取控件坐标,则可选相对于窗口坐标还是相对于屏幕坐标
坐标获取控件名=标题:{标题}文本:{}控件类型:{}坐标X:{}坐标Y:{}最大值:{默认30};最大值是搜索最大控件数
;可根据控件的相对窗口坐标来枚举控件名
=============>>>文件操作命令
删除文件=文件:{}
;支持文件或文件夹操作
清理目录=目录:{}保留:{1|2|3}
复制文件=文件:{}目标文件夹:{}
;支持文件和文件夹操作,支持通配符*?
创建快捷方式=文件:{}Lnk:{}
文件存在=文件:{}
;检测文件是否存在
==================>>>其它操作
延时=毫秒
发送按键=按键
调用命令集=命令集
点击鼠标=X坐标:{}Y坐标:{}
移动鼠标=X坐标:{}Y坐标:{}速度:{0最快(默认),100最慢}
退出程序=
设置分辨率=分辨率:{1024x768}刷新率:{75}色深:{32}
设置墙纸=图像:{<@windowsDir>\web\wallpaper\bliss.jpg}
恢复分辨率=
;无参数,恢复程序启动时的原始分辨率
设置计算机名IP=计算机名:{}IP:{}掩码:{}网关:{}DNS1:{}DNS2:{}IPX:{计算机名/数字}
;IP和掩码以及网关必须同时指定,DNS1和DNS2必须同时指定,其它可单独指定,IPX网络号如果为“计算机名”则根据计算机名后三位数字设置,若后三位不是数字,则生成随机100至1000的数字
注册热键=热键:[]命令集:[]
请注意,注册热键的参数与其它格式不同,使用[]来代表参数,因为热键要用到{},
==================>>>音量设置命令
设置音量=音量
设置波形音量=音量
设置麦克风音量=音量
静音=0或1

===================>>>注册表操作类
导入注册表=注册表文件.reg
排除删除注册表子键=键名:{}保留子键:{1|2|3}
排除删除注册表值=键名:{}保留值:{1|2|3}
写注册表=键名:{必选}值项:{}数据:{}类型:{REG_SZ","REG_MULTI_SZ","REG_EXPAND_SZ","REG_DWORD" , "REG_QWORD" 或 "REG_BINARY".}
=======================特殊命令
根据参数执行=参数:{}配置列表:{}
;在配置项中搜索与参数相匹配的配置并执行
=================================================================
----------------脚本范例 --自动设置录音设备为麦克风-----------------------------
-------------------------------------------------------
[Command]
;此脚本使用了三层嵌套判断!
文件存在=文件:{<@windowsdir>\RTHDCPL.EXE}
如果=参数:{<@执行结果>}运算符:{=}条件值:{1}

文件存在=文件:{<@windowsDir>\system32\drivers\rtkhdaud.dat}
如果=参数:{<@执行结果>}运算符:{=}条件值:{1}

对话框=标题:{检测成功,您可以使用本脚本}文本:{是否执行HD麦克风调节?}类型:{是否}
如果=参数:{<@执行结果>}运算符:{=}条件值:{1}
对话框=标题:{您选择了是}文本:{开始执行HD麦克风调节}
调用命令集=hd麦克风调节
否则=
对话框=标题:{您选择了否}文本:{放弃执行本脚本}
结束判断=

否则=
对话框=标题:{您未安装RTL麦克风调节补丁}文本:{请您在安装麦克风调节补丁后再使用本脚本}
结束判断=

否则=
对话框=标题:{对不起}文本:{您的声卡不是RTLHD系列,不能}
结束判断=



[HD麦克风调节]
运行=程序:{sndvol32.exe}显示:{};可将显示设为隐藏,则无界面操作
等待窗口出现=标题:{主音量}超时:{5}
点击菜单项=标题:{主音量}文本:{}菜单:{选项(&P)}项1:{属性(&R)}
等待窗口出现=标题:{属性}
controlcommand=标题:{属性}控件:{ComboBox1}命令:{SelectString}选项:{realtek HD audio input}
点击控件=标题:{属性}控件:{Button5}
等待窗口出现=标题:{录音控制}超时:{5}
获取坐标=标题:{录音控制}控件:{[CLASS:Static;TEXT:麦克风音量]}修正Y:{+220}修正x:{+10}相对:{屏幕}
;===============执行内容为演示,若要自动化操作,只需将上方获取控件坐标后的相对屏幕去掉,然后执行下列操作即可
;坐标获取控件名=标题:{录音控制}文本:{}控件类型:{Button}坐标X:{<@x>}坐标Y:{185}
;如果=参数:{<@CtrName>}运算符:{<>}条件值:{0}
;对话框=标题:{根据坐标获取控件名成功}文本:{控件名称:<@CtrName>}
;点击控件=标题:{录音控制}文本:{}控件:{<@CtrName>}
;否则=
;对话框=标题:{根据坐标获取控件名失败}文本:{返回值:<@CtrName>}
;结束判断=
;==============
移动鼠标=X坐标:{<@x>}Y坐标:{<@y>}速度:{40}
;设置麦克风音量=100


===================================
演示      根据MAC地址设置计算机名IP
--------------------------------------------------------
[Command]
根据参数执行=参数:{<@MacAddress>}配置列表:{根据Mac修改IP}
如果=参数:{<@执行结果>}运算符:{=}条件值:{0}
;当未找到MAC对应命令时执行手工输入计算机名IP
调用命令集=手工设置IP
否则=
对话框=标题:{成功}文本:{自动设置IP成功}
结束判断=

[根据Mac修改IP]
;此配置,左侧为参数,右侧为要执行的命令,=号以[=]表示,此形式支持除[判断]以外的所有命令,并且支持重复逐条执行
00-00-00-00-00-12=修改计算机名IP[=]计算机名:{}IP:{}掩码:{}网关:{}DNS1:{}DNS2:{}
00-00-00-00-00-12=如果成功[=]否则:{手工设置IP}
;这里连续对同一个MAC地址设置了两条命令,当搜索到第一条时,会设置计算机名IP,第二条命令检测是否设置成功,若失败,则执行另一个命令集[手工设置IP]

[手工设置IP]
输入框=标题:{手工设置计算机名IP}提示:{请输入计算机名:}变量:{CmpName}
输入框=标题:{手工设置计算机名IP}提示:{请输入IP:}变量:{IP}
输入框=标题:{手工设置计算机名IP}提示:{请输入网关:}变量:{GateWay}
输入框=标题:{手工设置计算机名IP}提示:{请输入DNS1:}变量:{DNS1}
......................................省略其它项
设置计算机名IP=计算机名:{<@CmpName}IP:{IP}网关:{GateWay}DNS1:{DNS1}DNS2:{DNS2}IPX:{计算机名}
对话框=
;返回执行结果
--------------------------------------------------------------
其它实用示例:
根据计算机名执行不同的操作,例如,部分机器用A墙纸,部分机器用B墙纸。。。部分机器显示A公告,部分机器显示B公告。。。等
----------------------------------------------------------------------
如果=参数值:{<@computername>}运算符:{in}条件值:{A001|A002|A003|A004}
设置墙纸=图像:{<@windowsdir>\a.jpg}
结束判断=
如果=参数值:{<@computername>}运算符:{in}条件值:{A005|A006|A007|A008}
设置墙纸=图像:{<@windowsdir>\a.jpg}
结束判断=
--------------------------------------------------------------------
其它示例不再列举,AU3基本常用内置函数,像基本的实现自动化操作的功能都有,用这个完全可以胜任绝大部分自动安装,操作窗口控件等功能

程序下载:
CmdRunner3.2 修正了执行dos命令的未正确获取命令的bug

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-6-22 23:59:18 | 显示全部楼层
沙发么?呵呵 强悍的很。!!顶 这个必须顶
发表于 2010-6-23 00:23:56 | 显示全部楼层
确实很强大
网吧工作能用到
发表于 2010-6-23 08:28:37 | 显示全部楼层
lz 很强大啊
发表于 2010-6-23 08:57:03 | 显示全部楼层
这个ms很不错~~~
发表于 2010-6-24 10:21:04 | 显示全部楼层
这个ms很不错~~~
发表于 2010-6-25 21:56:59 | 显示全部楼层
进来学习了。
发表于 2010-6-26 00:16:55 | 显示全部楼层
不知道怎么用呀?
发表于 2010-6-28 03:36:07 | 显示全部楼层
感谢你的分享......
发表于 2010-6-28 09:18:23 | 显示全部楼层
真的很强大,够我研究好几天了·
发表于 2010-6-29 09:54:15 | 显示全部楼层
学习学习,支持一下!
发表于 2010-6-29 12:41:51 | 显示全部楼层
很强大的东西,佩服佩服
发表于 2010-6-29 23:56:34 | 显示全部楼层
反复看了2遍,还要看
发表于 2010-7-2 12:25:03 | 显示全部楼层
貌似很有用
发表于 2010-9-25 10:22:18 | 显示全部楼层
看起来很强大
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 08:27 , Processed in 0.084782 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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