Что нового

[Элементы GUI] Не закрывается Gui

opoiknet

Новичок
Сообщения
2
Репутация
0
После запуска скрипта не срабатывает кнопка "закрыть"
нужен мониторинг нескольких IP
если поставить exitloop то опрос IP прекращается.


Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 625, 443, 192, 124)
GUISetState(@SW_SHOW)


While 1

$var1 = Ping("192.168.0.1",500)

If $var1=1 Then
	GUICtrlCreateLabel("ok", 24, 32, 108, 17)

Else
	GUICtrlCreateLabel("no", 24, 32, 108, 17)

EndIf



	$var2 = Ping("192.168.0.11",500)
If $var2=1 Then
	GUICtrlCreateLabel("ok", 24, 62, 108, 17)

Else
	GUICtrlCreateLabel("no", 24, 62, 108, 17)

EndIf
WEnd

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
 

aleratorio

Осваивающий
Сообщения
85
Репутация
43
Конечно не будет закрываться, тут первый бесконечный цикл, и до цикла обработки сообщений скрипт не доходит.

Надо что то типа:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 625, 443, 192, 124)
GUISetState(@SW_SHOW)

AdlibRegister("BeginPing", 1000)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

	EndSwitch
WEnd

Func BeginPing()
	$var1 = Ping("192.168.0.1",500)

	If $var1=1 Then
		GUICtrlCreateLabel("ok", 24, 32, 108, 17)
	Else
		GUICtrlCreateLabel("no", 24, 32, 108, 17)
	EndIf

	$var2 = Ping("192.168.0.11",500)
	If $var2=1 Then
		GUICtrlCreateLabel("ok", 24, 62, 108, 17)
	Else
		GUICtrlCreateLabel("no", 24, 62, 108, 17)
	EndIf
EndFunc


Либо (без задержки в секунду):
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Form1", 625, 443, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "ExitScript")
GUISetState(@SW_SHOW)

While 1
	$var1 = Ping("192.168.0.1",500)

	If $var1=1 Then
		GUICtrlCreateLabel("ok", 24, 32, 108, 17)
	Else
		GUICtrlCreateLabel("no", 24, 32, 108, 17)
	EndIf

	$var2 = Ping("192.168.0.11",500)
	If $var2=1 Then
		GUICtrlCreateLabel("ok", 24, 62, 108, 17)
	Else
		GUICtrlCreateLabel("no", 24, 62, 108, 17)
	EndIf
WEnd

Func ExitScript()
	Exit
EndFunc
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Работа над ошибками #2.

Вместо того чтобы создавать несколько элементов интерфейса на одном месте (GUICtrlCreateLabel выполняется много раз), нужно создавать один элемент и менять данные которые он показывает (GUICtrlSetData).

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 625, 443, 192, 124)
GUISetState(@SW_SHOW)

$Label1 = GUICtrlCreateLabel("", 24, 32, 108, 17)
$Label2 = GUICtrlCreateLabel("", 24, 62, 108, 17)

AdlibRegister("BeginPing", 1000)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func BeginPing()
    $var1 = Ping("192.168.0.1",500)

    If $var1=1 Then
        GUICtrlSetData($Label1, "ok")
    Else
        GUICtrlSetData($Label1, "no")
    EndIf

    $var2 = Ping("192.168.0.11",500)
    If $var2=1 Then
        GUICtrlSetData($Label2, "ok")
    Else
        GUICtrlSetData($Label2, "no")
    EndIf
EndFunc
 
Автор
opoiknet

opoiknet

Новичок
Сообщения
2
Репутация
0
Спасибо большое. Все заработало. :IL_AutoIt_1:
 
Верх