[已解决]自己刚写了一个网络服务器监控程序,点击开始以后,别的按钮没反应
本帖最后由 w393791998 于 2013-1-31 09:59 编辑点击开始按钮后,选择窗口关闭 或者停止按钮,程序都没有反应,希望大家能指点我一下。我觉得是我的循环写错了,但不知道该怎么修改。
问题已经解决,答案在haijie1223那楼。 感谢haijie1223的回答。
源码如下:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Local $y
$hGUI = GUICreate( "New Window", 468, 324, -1, -1)
$Label1 = GUICtrlCreateLabel( "外网连接速度:"& $y, 16, 17, 115, 29)
$Button2 = GUICtrlCreateButton( "开始", 306, 139, 119, 41)
$Button3 = GUICtrlCreateButton( "停止", 306, 185, 119, 41)
GUISetState()
While 1
$hMsg = GUIGetMsg()
Switch $hMsg
Case -3
Exit
Case $Button2
While 1
$iping=Ping("www.baidu.com")
If $iping Then
$y=GUICtrlSetData($Label1,"外网连接速度:"& $iping)
Else
MsgBox(16,"警告","服务器断开连接")
EndIf
WEnd
Case $Button3
$z = GUICtrlSetData($Label1,"没有启动程序")
EndSwitch
WEnd 回复 1# w393791998
内层while进入死循环了 回复 2# annybaby
我大概也猜到了,但是不知道该怎么修改。应该怎么修改呢?请赐教?{:face (229):} EndIf
WEnd
改为 EndIf
ExitLoop
WEnd 回复 4# haijie1223
感谢haijie1223,问题解决 虽然还不太理解这样做为什么就解决这个问题了,但是还是非常感谢,准备在研究一下。{:face (382):} 回复 5# w393791998
去查下一下au3自带的帮助,帮助是最好的老师~ 回复 4# haijie1223
haijie1223您好,我发现一个问题如果我添加了ExitLoop 那么我就不能时时刷新我的那个ping的时间了,只能返回第一次的ping的结果。那还有什么方法修改吗? 回复 7# w393791998
把里层while中的内容单独拿出来做一个函数,然后注册这个函数。 #include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Local $y
$hGUI = GUICreate( "New Window", 468, 324, -1, -1)
$Label1 = GUICtrlCreateLabel( "外网连接速度:"& $y, 16, 17, 115, 29)
$Button2 = GUICtrlCreateButton( "开始", 306, 139, 119, 41)
$Button3 = GUICtrlCreateButton( "停止", 306, 185, 119, 41)
GUISetState()
While 1
$hMsg = GUIGetMsg()
Switch $hMsg
Case -3
Exit
Case $Button2
AdlibRegister("PingIP",500) ;每500毫秒运行一次PingIP函数
Case $Button3
$z = GUICtrlSetData($Label1,"没有启动程序")
EndSwitch
WEnd
AdlibUnRegister("PingIP") ;推出前注销
Func PingIP()
$iping=Ping("www.baidu.com")
If $iping Then
$y=GUICtrlSetData($Label1,"外网连接速度:"& $iping)
Else
MsgBox(16,"警告","服务器断开连接")
EndIf
EndFunc 回复 9# cuihao777
这样的话,退出之前是停不了函数的,把停止拿到button3后面 学习了…… #include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Local $y
$hGUI = GUICreate( "New Window", 468, 324, -1, -1)
$Label1 = GUICtrlCreateLabel( "外网连接速度:"& $y, 16, 17, 115, 29)
$Button2 = GUICtrlCreateButton( "开始", 306, 139, 119, 41)
$Button3 = GUICtrlCreateButton( "停止", 306, 185, 119, 41)
GUISetState()
While 1
$hMsg = GUIGetMsg()
Switch $hMsg
Case -3
Exit
Case $Button2
AdlibRegister("PingIP",500) ;每500毫秒运行一次PingIP函数
Case $Button3
$z = GUICtrlSetData($Label1,"没有启动程序")
AdlibUnRegister("PingIP") ;推出前注销
EndSwitch
WEnd
Func PingIP()
$iping=Ping("www.baidu.com")
If $iping Then
$y=GUICtrlSetData($Label1,"外网连接速度:"& $iping)
Else
MsgBox(16,"警告","服务器断开连接")
EndIf
EndFunc 这样就可以停下来了。。。。{:face (303):}
页:
[1]