找回密码
 加入
搜索
查看: 4057|回复: 9

[AU3基础] 怎么写判定?帮助那里太过生涩了,不知道该怎么组合。

 火.. [复制链接]
发表于 2012-9-27 23:34:13 | 显示全部楼层 |阅读模式
本帖最后由 tk390480 于 2012-9-27 23:35 编辑

脑子不灵光,别见怪啊...以前只是编辑过星际争霸1的RPG地图,那种很初级。

帮助里
If $CmdLine[0] = 0 Then Exit

;Alternative:
If $CmdLine[0] = 0 Then
    Exit
EndIf
还有
Local $var = ""
If $var > 0 Then
    MsgBox(4096, "", "Value is positive.")
ElseIf $var < 0 Then
    MsgBox(4096, "", "Value is negative.")
Else
    If StringIsXDigit($var) Then
        MsgBox(4096, "", "Value might be hexadecimal!")
    Else
        MsgBox(4096, "", "Value is a string.")
    EndIf
EndIf

我运行了没什么效果,不知道是什么意思。
我需要做到检测有没有打开一个标题
如果有,可以继续执行下面的触发。
如果没有,关掉程序整个重新执行一遍。
=====================================
我也不是求帮写完整的,只是我搞不明白这判定语句怎么写的?麻烦帮做一个实例可以么?
 楼主| 发表于 2012-9-27 23:40:26 | 显示全部楼层
本帖最后由 tk390480 于 2012-9-27 23:42 编辑

;本脚本由i-Autoit-1.01 正式版 生成 ,非常感谢您的使用,请保留此脚本声明!  2012年09月26日
;wpsupdate.exe
;--------------------------------------------------------------;脚本开始
Opt("TrayIconDebug", 1) ;0=无信息, 1=调试信息
Opt("WinTextMatchMode", 2) ;1=完全匹配, 2=快速匹配
Opt("WinTitleMatchMode", 4) ;1=开头, 2=子串, 3=完全, 4=高级
Opt("WinSearchChildren", 1) ;0=不搜索, 1=搜索子窗口
Opt("WinDetectHiddenText", 1) ;0=不检测, 1=检测
;--------------------------------------------------------------;设置脚本参数
$WinTitle_1= ' WPS Office Installation Wizard '
$Wintxt_1= '立即安装'
;--------------------------------------------------------------;窗口元素变量声明


$Exe = 'WPS2012.12012.exe'
If ProcessExists($Exe) Then ProcessClose($Exe)
If Run($Exe) = 0 Then ShellExecute($Exe)

Do
        Sleep(10);
Until WinExists($Wintitle_1)
WinMove($Wintitle_1, "", 0, 0);让窗口在左上角
;--------------------------------------------------------------;程序启动,显示界面
        Sleep(2000);
MouseClick("left", 415, 265, 1);由于提取不到文字,只能按坐标实行点击安装
WinWaitActive("WPS 文字");安装完成后会自动弹出这个软件,还好可以用这个执行下面

ProcessExists ("wps.exe");安装后默认弹出的,下面都是判定后全部结束
ProcessClose ("wps.exe")
        Sleep(100);
ProcessExists ("kuaipan.exe")
ProcessClose ("kuaipan.exe")
Sleep(100);
ProcessExists ("wpsupdate.exe")
ProcessClose ("wpsupdate.exe")
========================================================
就是我测试时,有时安装窗口好像卡住了没出现在预定的地方,所以安装不了。我需要重新打开安装程序再自动安装一遍。
有兴趣的朋友可以下载金山的WPS办公软件试一下。
发表于 2012-9-28 11:24:22 | 显示全部楼层
Local $WinTitle_1= ' WPS Office Installation Wizard '
Local $Wintxt_1= '立即安装'
Local $Exe = 'WPS2012.12012.exe'
If ProcessExists($Exe) Then ProcessClose($Exe)
If FileExists(@ScriptDir&'\'&$Exe) Then 
ShellExecute(@ScriptDir&'\'&$Exe)
Else
        Exit(MsgBox(0,0,'指定运行文件不存在。'))
        EndIf
If WinWait($Wintitle_1,'',15) Then 
_test()
Else
        If ProcessExists($Exe) Then ProcessClose($Exe)
        Sleep(1000)
        ShellExecute(@ScriptDir&'\'&$Exe)
        If WinWait($Wintitle_1,'',15) Then 
        Exit(MsgBox(0,0,'未能检测到窗口,程序退出!'))
Else
        _test()
        EndIf
EndIf
;--------------------------------------------------------------;程序启动,显示界面
Func _test()
WinActive($Wintitle_1,'')
WinMove($Wintitle_1, "", 0, 0);让窗口在左上角
 Sleep(1000);
MouseClick("left", 415, 265, 1);由于提取不到文字,只能按坐标实行点击安装
WinWaitActive("WPS 文字");安装完成后会自动弹出这个软件,还好可以用这个执行下面

ProcessExists ("wps.exe");安装后默认弹出的,下面都是判定后全部结束
ProcessClose ("wps.exe")
        Sleep(100);
ProcessExists ("kuaipan.exe")
ProcessClose ("kuaipan.exe")
Sleep(100);
ProcessExists ("wpsupdate.exe")
ProcessClose ("wpsupdate.exe")
EndFunc


使用坐标点击方式,不太准确。使用按钮控件点击方式更为合适。

没有下载WPS。自行测试。。
发表于 2012-9-28 13:04:04 | 显示全部楼层
WPS还要安装脚本???

直接拆出来写个绿化工具用于写注册表和注册DLL不就完了???

 楼主| 发表于 2012-9-28 19:25:01 | 显示全部楼层
谢谢LS两位
直接拆出来写个绿化工具用于写注册表和注册DLL我还不会
我来试试2L的,要学会自己写判定。
发表于 2012-9-30 20:51:43 | 显示全部楼层
http://pan.baidu.com/share/link?shareid=71649&uk=891727794

直接拿去用吧,精简绿化的WPS2010,唯一的BUG是刚关闭文档再快速打开时闪退,不知道哪的问题...

绿化工具貌似同样适用于2012,自己测试吧...

本帖子中包含更多资源

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

×
发表于 2012-10-18 07:53:00 | 显示全部楼层
回复 3# 半芯竹

我写了一个程序使用的是按钮控件点击方式ControlClick,但是在运行的过程中吧,无意中动了一下鼠标结果就不运行了,使用Msgbox在其前后加入调试,发现前面的那句Msgbox可以出现,然后就不动了。后来想了禁鼠标输入,结果无效,害的我重启。没有办法我就只能MouseClick的方法模拟鼠标点击。能帮我解决一下嘛?谢谢!
发表于 2012-10-18 11:26:28 | 显示全部楼层
回复 7# ppzpph


    你就只会禁用鼠标,不会弄个超时后解锁?
把源码发上来,大家学习学习,探讨一下也是可以的。。
发表于 2012-10-19 09:39:03 | 显示全部楼层
回复 7# ppzpph


    禁用键鼠后按一下CTRL-ALT-DEL即可解锁,不用重启
发表于 2012-10-24 09:24:54 | 显示全部楼层
If WinActive("窗口名") Then
    MsgBox(0, "提示", "窗口被激活")
EndIf

加个这个判别应该就可以了!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 17:11 , Processed in 0.090579 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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