GUI界面中点击确定按钮后循环产生,如何中断该循环【已解决】
本帖最后由 dhh45 于 2010-9-26 14:59 编辑while 1
if$msg=$btthen
while 1
..........
wend
endif
wend
省略号内容主要是从GUI界面中获得取值,做一定处理
现在需要中断循环,需要从界面获得新的取值,点击确定后,再产生循环 自己顶一个 现在需要中断循环,需要从界面获得新的取值,点击确定后,再产生循环
dhh45 发表于 2010-9-25 17:09 http://www.autoitx.com/images/common/back.gif
“中断循环”的条件是什么?
“点击确定后,再产生循环”何处点击确定?
如果LZ贴出完整的可测试代码,并详细注明问题,也不至于让这个简单的问题摆3小时而无人回复…
靠猜是很费精力的。 嗯 嗯 。死循环 回复 3# afan
真的不好意思啊,不是我不贴代码,主要是公司内网的代码弄不出来,除非自己在打一遍代码
下面我会把我的意图写清楚的,谢谢你了啊 $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)
;界面中有以上控件
While1
$msg=GUIGetMsg
if $msg=$bt1 Then
While 1
$aa=WinActivate("TEST");等待TEST窗口出现
ifNot $aa=0Then;TEST窗口出现
;将$input1,$input,$input3的值输入到TEST窗口
EndIf
WEnd
ElseIf
if $msg=$bt2Then
;终止$bt1 的循环
EndIf
WEnd代码不完全,主要写出思路
可能我的思路不准确,请大家帮忙,只能想到这里了 如果是在操作过程中监控按钮动作,建议使用windows消息 回复 7# netegg
操作过程中是什么意思,点击“确定”按钮后,循环一直进行。
循环进行时,不一定有操作行为。实际情况应该是在操作行为结束后,终止循环,重新输入数据,再确定开始新的循环 方式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 其实这个是日常工作的辅助工具,当TEST窗口出现自动向TEST窗口输入GUI界面中的三个值,随着工作的进行,GUI界面中的三个值不符合要求需要修改,确定后,当TEST窗口出现自动向TEST窗口输入GUI界面中的新的三个值
就这样的工具
可能我的思路不对啊,请大家帮忙,可能还有其他思路 回复 9# afan
先谢谢了,后面仔细研究代码
还想说的方式2,如何响应终止
方式1,呵呵,研究中…… 本帖最后由 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 回复 12# sanmoking
用你的代码解决问题了,谢谢 回复 12# sanmoking
太牛了,又学会了一招,我做了个程序,工作起为,关都关不掉,这下好了,可以解决这个问题了。 我现在在做一个老化测试的小程序,刚好可以用到这个,顶顶
页:
[1]