找回密码
 加入
搜索
查看: 8104|回复: 22

[AU3基础] [已解决]if then elseif then end 语句问题

 火.. [复制链接]
发表于 2011-3-2 17:12:29 | 显示全部楼层 |阅读模式
本帖最后由 pdp320921 于 2011-3-20 17:35 编辑
If WinWaitActive("CTest - InstallShield Wizard","Setup Type") Then
   Send("{ENTER}")
   WinWaitActive("CTest - InstallShield Wizard","Choose Destination Location")
   Send("{ENTER}")
   WinWaitActive("CTest - InstallShield Wizard","Select Program Folder")
   Send("{ENTER}")
   Send("{ENTER}")
   Send("{ENTER}")
   Send("{ENTER}")
ElseIf WinWaitActive("Confirm Uninstall","Do you want to completely") Then
        Send("{TAB}")
        Send("{ENTER}")
EndIf
上述代码好像不能跳到下一步,if 完后不会继续执行下面的Elseif语句?
请教高手~~

本帖子中包含更多资源

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

×
发表于 2011-3-2 17:20:41 | 显示全部楼层
While 1
        If WinActive("CTest - InstallShield Wizard","Setup Type") Or WinActive("Confirm Uninstall","Do you want to completely") Then ExitLoop
        Sleep(10)
WEnd
If WinActive("CTest - InstallShield Wizard","Setup Type") Then

   Send("{ENTER}")

   WinWaitActive("CTest - InstallShield Wizard","Choose Destination Location")

   Send("{ENTER}")

   WinWaitActive("CTest - InstallShield Wizard","Select Program Folder")

   Send("{ENTER}")

   Send("{ENTER}")

   Send("{ENTER}")

   Send("{ENTER}")

ElseIf WinActive("Confirm Uninstall","Do you want to completely") Then

        Send("{TAB}")

        Send("{ENTER}")

EndIf
 楼主| 发表于 2011-3-2 19:02:22 | 显示全部楼层
While 1
        If WinActive("CTest - InstallShield Wizard","Setup Type") Or WinActive("Confirm Uninstall","Do you want to completely") Then ExitLoop
        Sleep(10)
WEnd
多了这一行,有这么大作用?
发表于 2011-3-2 19:47:26 | 显示全部楼层
本帖最后由 netegg 于 2011-3-2 19:55 编辑

这个用if解决不了
建议使用
select
  case WinActive("CTest - InstallShield Wizard","Setup Type")
     ....
    continuecase
  case WinActive("Confirm Uninstall","Do you want to completely")
     ...
endselect
或者就别用else
if   then
  。。。。
   if    then
     。。。。
   endif
endif
发表于 2011-3-2 19:54:17 | 显示全部楼层
if ... elseif....
本来就是两个条件只执行其一,看那个条件为真。
你要是想执行完了if后的接着执行elseif,那用两个if...endif
 楼主| 发表于 2011-3-2 20:57:09 | 显示全部楼层
回复5#


我有试着换成 用两个if...endif可还是不能顺序执行,不能执行下一步啊
发表于 2011-3-2 21:08:53 | 显示全部楼层
回复 6# pdp320921

关键是你怎么用的呀
 楼主| 发表于 2011-3-2 22:10:46 | 显示全部楼层
If WinWaitActive("CTest - InstallShield Wizard","Setup Type") Then
   Send("{ENTER}")
   WinWaitActive("CTest - InstallShield Wizard","Choose Destination Location")
   Send("{ENTER}")
   WinWaitActive("CTest - InstallShield Wizard","Select Program Folder")
   Send("{ENTER}")
   Send("{ENTER}")
   Send("{ENTER}")
   Send("{ENTER}")
Endif
If WinWaitActive("Confirm Uninstall","Do you want to completely") Then
        Send("{TAB}")
        Send("{ENTER}")
EndIf
如上,也不能顺序执行
发表于 2011-3-2 22:16:06 | 显示全部楼层
回复 6# pdp320921

WinWaitActive = 暂停脚本的执行,直到请求的窗口处于激活状态为止.
WinActive = 检查指定窗口是否存在且被激活.

错在哪里你应该明白了吧.
发表于 2011-3-3 11:14:31 | 显示全部楼层
回复 3# pdp320921


    看清楚是只多了这么几行吗?
问题出在WinWaitActive
 楼主| 发表于 2011-3-3 11:44:33 | 显示全部楼层
还是不知道,本人菜鸟
  If WinActive("CTest - InstallShield Wizard") Then
           WinWaitActive("CTest - InstallShield Wizard")
   Send("{ENTER}")
   WinWaitActive("CTest - InstallShield Wizard","Choose Destination Location")
   Send("{ENTER}")
   WinWaitActive("CTest - InstallShield Wizard","Select Program Folder")
   Send("{ENTER}")
   Send("{ENTER}")
   Send("{ENTER}")
   Send("{ENTER}")
  
  ElseIf WinActive("Confirm Uninstall") Then
            WinWaitActive("Confirm Uninstall")
        Send("{TAB}")
        Send("{ENTER}")
  EndIf
恳请大侠帮忙~~
if 后面的语句elseif无法继续进行~~
都纠结了几天了,汗~~
发表于 2011-3-3 12:14:17 | 显示全部楼层
5楼那里已经把你代码不能正常执行的原因说清楚了.
if...else...end要是执行了if的,就不会再执行else的.所以你后面那一段的代码是不可能再执行的.

另外,9楼和10楼的——你看明白了吗安装向导你点下一步以后,错误肯定不是马上弹出来的.
发表于 2011-3-3 16:41:24 | 显示全部楼层
回复 11# pdp320921

if <条件1> then
elseif <条件2> then
endif
如果条件1满足执行完条件1就完了
条件2就不管了
你要是在条件1不满足的情况下换条件
if
else
  if
  else
  endif
endif
发表于 2011-3-3 17:36:44 | 显示全部楼层
我大概理解一下:你想用IF THEN ELSEIF ENDIF 却发现IF里的执行了N而ELSEIF里的就没执行。原因是你没理解IF 的用法;还有,你那个winactive,是不会让程序等待运行的,简单来说,程序到了IF 这一句,只会判断一次
IF winactive 为真 then
Elseif 另一条件为真 then
Else 上面都不为真时
Endif
发表于 2011-3-9 10:29:44 | 显示全部楼层
这个处于同一优先级,同一条件要么执行1,要么执行2.不可能先执行1再执行2.除非增加条件,也就是采用循环方式增加条件,再就是语法上还却个"Else"语句
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-17 06:01 , Processed in 0.081697 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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