Что нового

[Автоматизация] События в зависимости от смещения объекта на картинке.

X3.42rus

Новичок
Сообщения
8
Репутация
0
Добрый день уважаемые форумчане.
Почитал темы с "похожими" задачами, но толком ничего не выяснил ибо я дуб.
В общем возникла такая задача:
Имеется в окне браузера некий видеопоток в котором грубо говоря перемещаеться красный квадрат.
Хочется, что бы скрипт при запуске определял расстояние от края окна с (заданных координат) до первой красной точки, это дело запоминал, затем через Н количества времени (1-2 сек для примера) проверял снова. И если было отклонение влево или вправо выдавал событие, допустим msgbox-ы мол "объект сместился влево\вправо". ну и заново... определяем, сравниваем, ивент...
Ну и полным апогеем всего, что бы скрипт это мог делать если окно с перемещающимся красным квадратом было свернуто.

Буду благодарен за любую помощь.
Заранее спасибо за Ваши ответы.
 

Fever

Скриптер
Сообщения
308
Репутация
112
Код:
Global _
$iX = 0, $iY = 0, _
$sColor = "0xFF0000"

Local $aCash[2] = [False,False], $_x, $_y

HotKeySet("{ESC}", "_Exit")

While 1
	$aSearch = PixelSearch($iX, $iY, @DesktopWidth, @DesktopHeight, $sColor)
	If IsArray($aSearch) Then
		If $aCash[0] <> False And $aCash[1] <> False Then
			$_x = $aCash[0] - $aSearch[0]
			If $_x > 0 Then
				; сместились влево
			ElseIf $_x < 0
				; сместились вправо
			Else
				; координата х не изменилась
			EndIf

			$_y = $aCash[0] - $aSearch[0]
			If $_y > 0 Then
				; сместились вверх
			ElseIf $_y < 0
				; сместились вниз
			Else
				; координата у не изменилась
			EndIf
		Else
			$aCash[0] = $aSearch[0]
			$aCash[1] = $aSearch[1]
		EndIf
	EndIf
	Sleep(2*1000)
WEnd

Func _Exit()
	Exit
EndFunc
 
Автор
X

X3.42rus

Новичок
Сообщения
8
Репутация
0
О! Спасибо большое, щас буду курить этот код.
Бегло проглядев возник вопрос, где поглядеть таблицу кодов цветов.
Ну всмысле какой код у цвета где подглядеть.
Пиксель ищеться по экрану? Т.е. не в окне программы, а по эрану я так понимаю?
Еще раз спасибо за наводочку.
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
X3.42rus
Для узнавания: цвета, координат, название окна и т.д
 
Автор
X

X3.42rus

Новичок
Сообщения
8
Репутация
0
О! Спасибо. Насчет поглядеть там цвет, я даже и не подумал. Каюсь - грешен.

Теперь о насущьном. А именно. Застаить "пиксельхантить" окно в свернутом состоянии?
Если есть ссылочка поделитесь.
Спасибо.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
623
X3.42rus
именно в свернутом, то нет(?). можно, если это не принципиально, окно подвинуть за пределы экрана, например задав заведомо большие координаты.
 
Автор
X

X3.42rus

Новичок
Сообщения
8
Репутация
0
Хм, печально. Я уже подумал о идее утаскивать это окно на расширенный экран.
Есть ли функция перемещения окна?
Ну как это вижу я... запускается значит окно с квадратом, делаются все необходимые настройки. Далее нажимается кнопка "старт" (не суть важно) запускающая скрипт. Скрипт первым делом перемещает окно за пределы экрана, ну и начинает уже свое черное дело по выслеживанию перемещения крайнего левого верхнего пикселя квадрата.


p.s. В коде который мне дали, это только у меня просит then после EleseIf? поставил заработало.
Так-то код вроде бы понятен, один затуп - с локальными переменными. в общем поищу еще книжек и примеров, по этому поводу.



Добавлено:
Сообщение автоматически объединено:

Все, раскурил я код, любезно предоставленный Fever. Вот что получилось, что бы работало. На ивенте - перемещение курсора мыши.
Код:
Global _
$iX = 0, $iY = 0, _
$sColor = "0xFF0000"

Local $aCash[2] = [False,False], $_x, $_y

HotKeySet("{ESC}", "_Exit")

While 1
    $aSearch = PixelSearch($iX, $iY, @DesktopWidth, @DesktopHeight, $sColor)
    If IsArray($aSearch) Then
        If $aCash[0] <> False And $aCash[1] <> False Then
            $_x = $aCash[0] - $aSearch[0]
            If $_x > 0 Then
                ; сместились влево
				MouseMove($aSearch[0],$aSearch[1],1)
            ElseIf $_x < 0 Then
                ; сместились вправо
				MouseMove($aSearch[0],$aSearch[1],1)
            Else
                ; координата х не изменилась
            EndIf

            $_y = $aCash[1] - $aSearch[1]
            If $_y > 0 Then
                ; сместились вверх
				MouseMove($aSearch[0],$aSearch[1],1)
            ElseIf $_y < 0 Then
                ; сместились вниз
				MouseMove($aSearch[0],$aSearch[1],1)
            Else
                ; координата у не изменилась
            EndIf
        Else
            $aCash[0] = $aSearch[0]
            $aCash[1] = $aSearch[1]
        EndIf
    EndIf
    Sleep(1000)
WEnd

Func _Exit()
    Exit
EndFunc

Я бесконечно счастлив, что хоть немного но стал понимать AutoIT. Теперь дело за перемещением окна за экран.
Спасибо всем кто помогает.
 

Arei

Скриптер
Сообщения
938
Репутация
115
OffTopic:
читайте справку.


WinMove
--------------------------------------------------------------------------------

Переместить окно.

WinMove ( "title", "text", x, y, [width], [height] )



Параметры

title Заголовок окна.
text (опциональный) текст окна.
x новая X координата окна.
y новая Y координата окна.
width (опциональный) новая ширина окна.
height (опциональный) новая высота окна.
 
Верх