yufei8051 发表于 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>0then
                        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就一直在那里循环判断等着.。
也就是说只要条件不满足就始终等着,条件满足后执行一遍代码就退出。该怎么写?

yufei8051 发表于 2012-5-4 15:55:14

本帖最后由 yufei8051 于 2012-5-4 16:35 编辑

水平真滴很菜,期望大大们指点!谢谢了先!
问题补充:
我用while 试了,还是不行,运行脚本后虽然不退出了,但是即使 $yjsl>0 了,脚本也没有任何反应While 1
                        If $yjsl>0Then
                                If StringCompare($mmbz,"买进")=0 Then
                                MsgBox(0, "测试", $gpdm&"买进")
                                EndIf
                                If StringCompare($mmbz,"卖出")=0 Then
                                MsgBox(0, "测试", $gpdm&"卖出")
                                EndIf
                        EndIf
                sleep(3000)       
                WEnd       

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

DO
.....

   UNTIL

yufei8051 发表于 2012-5-4 16:36:14

DO
.....

   UNTIL
ANTKD 发表于 2012-5-4 16:24 http://www.autoitx.com/images/common/back.gif


    谢谢指导,我再用这个试下

yufei8051 发表于 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还是不行啊?跟上面一样的情况

netegg 发表于 2012-5-4 16:59:35

do()
func do()
            If$yjsl>0then
                        If StringCompare($mmbz,"买进")=0 Then
                        MsgBox(0, "测试", $gpdm&"买进")
                        EndIf
                        If StringCompare($mmbz,"卖出")=0 Then
                        MsgBox(0, "测试", $gpdm&"卖出")
                        EndIf
         else
               do()
       EndIf
endfunc
不知道行不行

yufei8051 发表于 2012-5-4 17:05:17

do()
func do()
            If$yjsl>0then
                        If StringCompare($mmbz,"买 ...
netegg 发表于 2012-5-4 16:59 http://www.autoitx.com/images/common/back.gif
感谢学长指导,可是我试了下提示:

netegg 发表于 2012-5-4 17:09:01

本帖最后由 netegg 于 2012-5-4 17:10 编辑

函数名改下,do是关键字,偷懒写的,另外,变量用global定义,具体自己分析吧,不知道你脚本的结构长什么样

凌九霄 发表于 2012-5-4 17:37:01

定时器更好,不然,还以为程序死掉了

yufei8051 发表于 2012-5-4 18:12:33

谢谢楼上两位学长!能不能说具体一些呀?我太菜看不懂哦

netegg 发表于 2012-5-4 18:12:50

回复 9# 凌九霄
那是另一码事

502762378 发表于 2012-5-4 20:19:11

回复 2# yufei8051

你先用WinActivate激活你的“预警 - (运行)'的窗口,据我所知ControlGetText后台得不到控件信息吧。
但是即使 $yjsl>0 了,脚本也没有任何反应?你说$yjsl>0没有反应,你怎么知道大于0了

yufei8051 发表于 2012-5-5 22:07:22

回复yufei8051

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


    我不用这一句了,改成等待窗口弹出,这样就解决了。
    谢谢学长指导。
页: [1]
查看完整版本: (已解决)请教如何让程序在条件未满足时一直在那里等待直到满足时向下执行?