Что нового

Ошибка выхода из цикла while(ботоводство)

Автор
J

jollar

Новичок
Сообщения
11
Репутация
0
Garrett, что-то с трудом понимаю суть... Всегда думал, что если есть команда, то она должна выполнятся при любом раскладе,а не когда захочется)

Viktor1703, While позволял ожидать определённого события бесконечно-длительный промежуток времени, который по сути рандом=> командой Sleep(n) тут не отделаться... Если только некоторый промежуток времени проверять через IF событие. По-сути IF представить, как While и зациклить с помощью GOTO.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
jollar [?]
Garrett, что-то с трудом понимаю суть
Скорее я вас что-то не пойму :smile:
Вам нужно выполнять цикл до тех пор, пока не появится окно. Так?
Окно вы естественно идентифицируете по цвету. Так?
 
Автор
J

jollar

Новичок
Сообщения
11
Репутация
0
Ес. Но он не хочет идентифицировать его. По неизвестной мне причине. Когда я удалил вложенный While, он начал его идентифицировать.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
jollar [?]
Тогда вот вам пример, посмотрите его и используйте AdlibRegister
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Dim $Y = 0, $hWnd
Opt('PixelCoordMode', 2)
Opt('MouseCoordMode', 2)

$Form1 = GUICreate("PixelGetColor", 200, 54, 192, 114)
$Label1 = GUICtrlCreateLabel("", 33, 24, 1, 1)
GUISetState(@SW_SHOW)



$hWnd = WinGetHandle("PixelGetColor")
If WinExists("PixelGetColor") Then
	AdlibRegister('_PixelGetColor')
	_Color()
EndIf

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

	EndSwitch
WEnd

Func _PixelGetColor()
	; Ждём появления красного пикселя
	If Hex(PixelGetColor(33, 24, $hWnd), 6) = 'FF0000' Then 
		MsgBox(0, "", "Success!")
		AdlibUnRegister('_PixelGetColor')
	EndIf
	
	
EndFunc

Func _Color()
	Sleep(10000)
	GUICtrlSetBkColor($Label1, 0xFF0000)
EndFunc
 
Автор
J

jollar

Новичок
Сообщения
11
Репутация
0
Спасибо) Будем думать и решать. Тему можно закрыть.
 
Верх