找回密码
 加入
搜索
查看: 4291|回复: 12

[AU3基础] (已解决)请教如何让程序在条件未满足时一直在那里等待直到满足时向下执行?

  [复制链接]
发表于 2012-5-4 15:50:05 | 显示全部楼层 |阅读模式
本帖最后由 yufei8051 于 2012-5-5 22:07 编辑

感谢各位学长在上个帖子(怎样取得列表框的文字呀?用Au3Info什么也不显示?)里的指导,基本问题解决了,实验代码如下:
     $kk = ControlGetText("预警 - (运行)", "","")
        $yjsl=ControlListView("预警 - (运行)", "",1702,"GetItemCount");是否有预警
         $gpdm = StringLeft(ControlListView("预警 - (运行)", "",1702,"GetText",0,0),6);取得股票代码
        $mmbz = StringLeft(ControlListView("预警 - (运行)", "",1702,"GetText",0,1),2);取得买卖标志
010                If         $yjsl>0  then
                        If StringCompare($mmbz,"买进")=0 Then
                        MsgBox(0, "测试", $gpdm&"买进")
                        EndIf
                        If StringCompare($mmbz,"卖出")=0 Then
                        MsgBox(0, "测试", $gpdm&"卖出")
                        EndIf
050                EndIf        
                MsgBox(0, "测试", "还没预警等着他")
新问题又来了,我想让程序开始后就判断第010行的 ($yjsl>0) 是否大于0,若大于0则执行下面的语句到050行而后退出,若不大于0就一直在那里循环判断等着.。
也就是说只要条件不满足就始终等着,条件满足后执行一遍代码就退出。该怎么写?
 楼主| 发表于 2012-5-4 15:55:14 | 显示全部楼层
本帖最后由 yufei8051 于 2012-5-4 16:35 编辑

水平真滴很菜,期望大大们指点!谢谢了先!
问题补充:
我用while 试了,还是不行,运行脚本后虽然不退出了,但是即使 $yjsl>0 了,脚本也没有任何反应
While 1
                        If $yjsl>0  Then 
                                If StringCompare($mmbz,"买进")=0 Then
                                MsgBox(0, "测试", $gpdm&"买进")
                                EndIf
                                If StringCompare($mmbz,"卖出")=0 Then
                                MsgBox(0, "测试", $gpdm&"卖出")
                                EndIf
                        EndIf
                sleep(3000)        
                WEnd        
发表于 2012-5-4 16:24:58 | 显示全部楼层
DO
  .....

   UNTIL
 楼主| 发表于 2012-5-4 16:36:14 | 显示全部楼层
DO
  .....

   UNTIL
ANTKD 发表于 2012-5-4 16:24



    谢谢指导,我再用这个试下
 楼主| 发表于 2012-5-4 16:45:01 | 显示全部楼层
      Do
                         
                                If StringCompare($mmbz,"买进")=0 Then
                                MsgBox(0, "测试", $gpdm&"买进")
                                EndIf
                                If StringCompare($mmbz,"卖出")=0 Then
                                MsgBox(0, "测试", $gpdm&"卖出")
                                EndIf
                        sleep(3000)        
                Until $yjsl>0 
                        ;MsgBox(0, "测试", "还没预警等着他")
                Exit
还是不行啊?跟上面一样的情况
发表于 2012-5-4 16:59:35 | 显示全部楼层
do()
func do()
              If  $yjsl>0  then
                        If StringCompare($mmbz,"买进")=0 Then
                        MsgBox(0, "测试", $gpdm&"买进")
                        EndIf
                        If StringCompare($mmbz,"卖出")=0 Then
                        MsgBox(0, "测试", $gpdm&"卖出")
                        EndIf
           else
               do()
       EndIf  
endfunc
不知道行不行
 楼主| 发表于 2012-5-4 17:05:17 | 显示全部楼层
do()
func do()
              If  $yjsl>0  then
                        If StringCompare($mmbz,"买 ...
netegg 发表于 2012-5-4 16:59

感谢学长指导,可是我试了下提示:

本帖子中包含更多资源

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

×
发表于 2012-5-4 17:09:01 | 显示全部楼层
本帖最后由 netegg 于 2012-5-4 17:10 编辑

函数名改下,do是关键字,偷懒写的,另外,变量用global定义,具体自己分析吧,不知道你脚本的结构长什么样
发表于 2012-5-4 17:37:01 | 显示全部楼层
定时器更好,不然,还以为程序死掉了
 楼主| 发表于 2012-5-4 18:12:33 | 显示全部楼层
谢谢楼上两位学长!能不能说具体一些呀?我太菜看不懂哦
发表于 2012-5-4 18:12:50 | 显示全部楼层
回复 9# 凌九霄
那是另一码事
发表于 2012-5-4 20:19:11 | 显示全部楼层
回复 2# yufei8051

你先用WinActivate激活你的“预警 - (运行)'的窗口,据我所知ControlGetText后台得不到控件信息吧。
  但是即使 $yjsl>0 了,脚本也没有任何反应?你说$yjsl>0没有反应,你怎么知道大于0了
 楼主| 发表于 2012-5-5 22:07:22 | 显示全部楼层
回复  yufei8051

你先用WinActivate激活你的“预警 - (运行)'的窗口,据我所知ControlGetText后台得不到 ...
502762378 发表于 2012-5-4 20:19



    我不用这一句了,改成等待窗口弹出,这样就解决了。
    谢谢学长指导。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-30 11:30 , Processed in 0.084982 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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