找回密码
 加入
搜索
查看: 6894|回复: 14

[系统综合] GUI界面中点击确定按钮后循环产生,如何中断该循环【已解决】

  [复制链接]
发表于 2010-9-25 17:09:53 | 显示全部楼层 |阅读模式
本帖最后由 dhh45 于 2010-9-26 14:59 编辑

while 1
   if  $msg=$bt  then
       while 1
             ..........
       wend
   endif
wend

省略号内容主要是从GUI界面中获得取值,做一定处理
现在需要中断循环,需要从界面获得新的取值,点击确定后,再产生循环

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2010-9-25 20:41:55 | 显示全部楼层
自己顶一个
发表于 2010-9-25 21:04:44 | 显示全部楼层
现在需要中断循环,需要从界面获得新的取值,点击确定后,再产生循环
dhh45 发表于 2010-9-25 17:09


“中断循环”的条件是什么?
“点击确定后,再产生循环”何处点击确定?

如果LZ贴出完整的可测试代码,并详细注明问题,也不至于让这个简单的问题摆3小时而无人回复…
靠猜是很费精力的。
发表于 2010-9-26 00:07:57 | 显示全部楼层
嗯 嗯 。死循环
 楼主| 发表于 2010-9-26 10:10:36 | 显示全部楼层
回复 3# afan

真的不好意思啊,不是我不贴代码,主要是公司内网的代码弄不出来,除非自己在打一遍代码

下面我会把我的意图写清楚的,谢谢你了啊
 楼主| 发表于 2010-9-26 10:30:01 | 显示全部楼层
$input1=GUICtrlCreateInput("input1",20,20,30,40)
$input2=GUICtrlCreateInput("input2",50,50,30,40)
$input3=GUICtrlCreateInput("input3",80,80,30,40)
$bt1=GUICtrlCreateButton("确定",130,130,30,40)
$bt2=GUICtrlCreateButton("终止",150,150,30,40)
;界面中有以上控件
While  1
$msg=GUIGetMsg
if $msg=$bt1 Then
        While 1
                $aa=WinActivate("TEST");等待TEST窗口出现
                if  Not $aa=0  Then;TEST窗口出现
                        ;将$input1,$input,$input3的值输入到TEST窗口
                EndIf
        WEnd
ElseIf        
if $msg=$bt2Then
        ;终止$bt1 的循环
EndIf
WEnd
代码不完全,主要写出思路
可能我的思路不准确,请大家帮忙,只能想到这里了
发表于 2010-9-26 10:59:55 | 显示全部楼层
如果是在操作过程中监控按钮动作,建议使用windows消息
 楼主| 发表于 2010-9-26 11:19:11 | 显示全部楼层
回复 7# netegg
操作过程中是什么意思,点击“确定”按钮后,循环一直进行。
循环进行时,不一定有操作行为。实际情况应该是在操作行为结束后,终止循环,重新输入数据,再确定开始新的循环
发表于 2010-9-26 11:27:04 | 显示全部楼层
方式1,$bt1 事件里不使用循环,直接 WinWait("TEST"),终止Wait可用热键。
方式2,使用循环,并GUIGetMsg(),可响应终止。
方式3,注册 Adlib 函数。

下面代码以方式3为例:
GUICreate('窗口', 250, 200)
$input1 = GUICtrlCreateInput('input1', 20, 20, 200, 20)
$input2 = GUICtrlCreateInput('input2', 20, 50, 200, 20)
$input3 = GUICtrlCreateInput('input3', 20, 80, 200, 20)
$bt1 = GUICtrlCreateButton('执行', 30, 130, 80, 25)
$bt2 = GUICtrlCreateButton('终止', 130, 130, 80, 25)
GUISetState()

While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
                Case $bt1
                        AdlibRegister('_Found')
                        GUICtrlSetState($bt1, 128)
                Case $bt2
                        AdlibUnRegister()
                        GUICtrlSetState($bt1, 64)
        EndSwitch
WEnd

Func _Found()
        If Not WinExists('test') Then Return
        WinActivate('test')
        ;输入数据
        AdlibUnRegister()
        GUICtrlSetState($bt1, 64)
EndFunc   ;==>_Found
 楼主| 发表于 2010-9-26 11:28:25 | 显示全部楼层
其实这个是日常工作的辅助工具,当TEST窗口出现自动向TEST窗口输入GUI界面中的三个值,随着工作的进行,GUI界面中的三个值不符合要求需要修改,确定后,当TEST窗口出现自动向TEST窗口输入GUI界面中的新的三个值

就这样的工具

可能我的思路不对啊,请大家帮忙,可能还有其他思路
 楼主| 发表于 2010-9-26 11:31:42 | 显示全部楼层
回复 9# afan
先谢谢了,后面仔细研究代码

还想说的方式2,如何响应终止
方式1,呵呵,研究中……
发表于 2010-9-26 12:10:30 | 显示全部楼层
本帖最后由 sanmoking 于 2010-9-26 12:22 编辑

我一般都是这样用的
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 242, 135, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Button1 = GUICtrlCreateButton("点击后开始", 48, 40, 137, 33)
GUICtrlSetOnEvent(-1, "ch")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$ok = 0;开关的初始状态
$num = 0
While 1
Sleep(20)
ch1();实际运行的代码要放到主循环里,相当于布置好线路,只等开关联通
WEnd
Func ch();点击按钮运行的这个函数,相当于电灯的开关
If $ok = 0 Then
  $ok = 1
   GUICtrlSetData($Button1, "点击后暂停")
Else
  $ok = 0
  GUICtrlSetData($Button1, "点击后开始")
EndIf 
EndFunc
Func ch1();这个函数才是实际进行的代码
If $ok = 1 Then ;一定要有这个的开关
ToolTip($num);这里放你自己的代码
$num += 1
EndIf  
EndFunc

Func Form1Close()
Exit
EndFunc

评分

参与人数 2金钱 +40 收起 理由
lance504 + 20
afan + 20

查看全部评分

 楼主| 发表于 2010-9-26 14:59:06 | 显示全部楼层
回复 12# sanmoking


用你的代码解决问题了,谢谢
发表于 2011-9-18 21:34:05 | 显示全部楼层
回复 12# sanmoking


    太牛了,又学会了一招,我做了个程序,工作起为,关都关不掉,这下好了,可以解决这个问题了。
发表于 2013-7-25 21:38:14 | 显示全部楼层
我现在在做一个老化测试的小程序,刚好可以用到这个,顶顶
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-6 09:56 , Processed in 0.088961 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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