找回密码
 加入
搜索
查看: 2883|回复: 6

[AU3基础] 内部if判断退出最外的while循环

  [复制链接]
发表于 2016-10-10 12:16:09 | 显示全部楼层 |阅读模式
本帖最后由 bill.chen 于 2016-10-10 18:20 编辑

向各位请教一个问题,我写了一个检查杀毒软件进程的代码,想实现在弹出消息框点确定时,能退出这个最外面的while循环,代码如下,请各位指点一下


;==========判断杀毒软件进程是否正常运行
global $r
while 1
if  processexists("clamscan.exe") Then
MsgBox($MB_SYSTEMMODAL, "","杀毒软件正在运行")
Else
$pingtime=ping("mail.test.com")
if $pingtime>0 Then
;========发邮件模块==================
Local $msg = ObjCreate ("JMail.Message")
If IsObj($msg) Then
$msg.Charset = "gb2312"
$msg.Silent = true
$msg.Priority = 3
$msg.MailServerUserName = "bill.chen@test.com"                     ; SMTP验证用户名
$msg.MailServerPassword = "123456"                             ; SMTP验证密码
$msg.From = "bill.chen@test.com"                                    ; 发件人地址
$msg.FromName=@ComputerName & @UserName                                                          ;当前计算机名加用户名
;$msg.FromName = @UserName                                          ; 发件人名称
$msg.AddRecipient("bill.chen@test.com", "1234567")                  ; 收件人信息
$msg.Subject = "请注意这台PC杀毒软件异常,请注意检查"                ; 邮件标题
$msg.Body = "这是测试邮件" & @CRLF                              ; 邮件内容第1行
$msg.AppendText("这是附加的信息")                               ; 邮件内容第n行
If $msg.Send("mail.test.com") Then

                    ;run(@ComSpec & " /c " &' netsh interface set interface "本地连接" disabled', "", @SW_HIDE)
                ;run(@ComSpec & " /c " &' netsh interface set interface "无线网络连接" disabled', "", @SW_HIDE)
                            MsgBox(48, "网络通的情况", "由于没能未检测到杀到软件运行,已将网络断开,请及时与管理员联系")
                                    ;local $r
                                    if $r=1 Then
                                        ExitLoop
                                        endif
Else
                MsgBox(0, "", "发送失败")
EndIf
Else
        MsgBox(0, "", "ObjCreate Jmail.Message失败")
EndIf
else
                                ;run(@ComSpec & " /c " &' netsh interface set interface "本地连接" disabled', "", @SW_HIDE)
               ; run(@ComSpec & " /c " &' netsh interface set interface "无线网络连接" disabled', "", @SW_HIDE)
                    MsgBox(48, "网络不通的情况", "由于没能未检测到杀到软件运行,已将网络断开,请及时与管理员联系")
                                     ;local $s
                                    if $r=1 Then
                                        Exit
                                        endif
EndIf


EndIf
sleep(6000)
WEnd


根据杀毒软件进程,弹出相对应的消息框,点一次确定就可以退出这个while循环,不然一直在弹出这个消息框,想了好久也没有实现,请各位指点一下。



同时这个程序 还有一个问题在,域里普通用户运行的话,会提示ObjCreate Jmail.Message失败,这个有什么处理办法不?
发表于 2016-10-10 13:26:50 | 显示全部楼层
楼主自己的逻辑 有问题,  难道检测到 杀毒软件在运行 之后 就不再检测了么?

while 1
if  processexists("qq.exe")=0 Then
msgbox(0,'','杀软未运行则发送邮件等操作',10)
;......
exitloop
EndIf
sleep(2000)
WEnd
 楼主| 发表于 2016-10-10 18:19:11 | 显示全部楼层
回复 2# lin6051


    新手初学的,这个while循环,是一直在执行这个循环体的。
发表于 2016-10-12 15:06:35 | 显示全部楼层
ExitLoop 可以加参数 1是当前, 2是上一层,类推
发表于 2016-10-13 01:55:45 | 显示全部楼层
如果多层循环,用“exitloop N”,N代表循环层数
发表于 2016-10-19 14:41:08 | 显示全部楼层
什么软件,干啥用的
发表于 2016-10-26 21:40:38 | 显示全部楼层
ExitLoop N层
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-24 09:49 , Processed in 0.087995 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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