Что нового

[Автоматизация] PixelSearch и ControlClick в If

SkinWarS

Новичок
Сообщения
26
Репутация
0
Здравствуйте, потихоньку разбираюсь в AutoIT, но столкнулся с такой проблемой что не работает PixelSearch
Код:
Func qwerty()
    ; ---
    $hWnd = WinGetHandle( "Embedded Web control Test" )
Opt( "PixelCoordMode", 1 )

       
        $coord = PixelSearch(34, 614, 34, 614, 0xFFB300, $hWnd )
        If Not @error Then
			ControlClick ( $hWnd,"", "MacromediaFlashPlayerActiveX1", "left", 1, 40, 630);мобилка
			sleep(4000)
			ControlClick ( $hWnd,"", "MacromediaFlashPlayerActiveX1", "left", 1, 771, 252);принять
            Sleep(2000); задержка 1 секунда
			ControlClick ( $hWnd,"", "MacromediaFlashPlayerActiveX1", "left", 1, 751, 132); закрыть
            Sleep(2500)
			$coord = PixelSearch(34, 614, 34, 614, 0x454542, $hWnd )
If Not @error Then
	Sleep (5000)
EndIf


подскажите где ошибка?
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
PixelSearch ( left, top, right, bottom, color [, shade-variation = 0 [, step = 1 [, hwnd ]]] )
Код:
$coord = PixelSearch(34, 614, 34, 614, 0xFFB300, 0, 1, $hWnd )
 
Автор
S

SkinWarS

Новичок
Сообщения
26
Репутация
0
и? у меня поиск пиксела вообще игнорируется, а сразу жмется контролклик в точку
 

qqww22

Новичок
Сообщения
115
Репутация
4
SkinWarS сказал(а):
и? у меня поиск пиксела вообще игнорируется, а сразу жмется контролклик в точку
$coord = PixelSearch(34, 614, 34, 614, 0xFFB300, "ТУТ ЕЩЁ ОДНА ПЕРЕМЕННАЯ А ПОТОМ ТОКА HWND,$hWnd )
 
Автор
S

SkinWarS

Новичок
Сообщения
26
Репутация
0
после цвета идут не обязательные параметры
 

Ksaan

Знающий
Сообщения
207
Репутация
15
SkinWarS сказал(а):
после цвета идут не обязательные параметры
Я так и не понял, тебе помог пример edyapd или нет? если нет выкидывай весь скрипт.
И еще, зачем тебе узнавать координаты пикселя если ты их уже знаешь?
 

syavak

Новичок
Сообщения
12
Репутация
1
у тебья 2 иф и только 1 ендиф , может еще один ендиф вставиш
 
Автор
S

SkinWarS

Новичок
Сообщения
26
Репутация
0
Ksaan сказал(а):
SkinWarS сказал(а):
после цвета идут не обязательные параметры
Я так и не понял, тебе помог пример edyapd или нет? если нет выкидывай весь скрипт.
И еще, зачем тебе узнавать координаты пикселя если ты их уже знаешь?

нет пример мне тот не помог, не работает и всё, также клацает по координатам КонтрКлика, а чем не нравится скрипт в первом сообщение?


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

вроде ошибку не выдает при запуске скрипта....
 

syavak

Новичок
Сообщения
12
Репутация
1
попробуй так и отпиши результат
Код:
Func qwerty()
    ; ---
    $hWnd = WinGetHandle( "Embedded Web control Test" )
Opt( "PixelCoordMode", 1 )

       
        $coord = PixelSearch(34, 614, 34, 614, 0xFFB300, $hWnd )
        If Not @error Then
            MsgBox(4096,"Цвет",'если  0xFFB300 = 0x'&Hex(PixelGetColor( 34, 614 , $hWnd), 6)&' то все работает норм')
            ControlClick ( $hWnd,"", "MacromediaFlashPlayerActiveX1", "left", 1, 40, 630);мобилка
            sleep(4000)
            ControlClick ( $hWnd,"", "MacromediaFlashPlayerActiveX1", "left", 1, 771, 252);принять
            Sleep(2000); задержка 1 секунда
            ControlClick ( $hWnd,"", "MacromediaFlashPlayerActiveX1", "left", 1, 751, 132); закрыть
            Sleep(2500)
        EndIf
            $coord = PixelSearch(34, 614, 34, 614, 0x454542, $hWnd )
If Not @error Then
    Sleep (5000)
EndIf
EndFunc
 
Автор
S

SkinWarS

Новичок
Сообщения
26
Репутация
0
запускаю твой скрипт и он сразу финиширует


--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
+>22:58:43 AutoIt3.exe ended.rc:0
+>22:58:43 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 0.474
 

syavak

Новичок
Сообщения
12
Репутация
1
ну тогда даже незнаю ) попробуй тут весь код выложить мож там чтото нетак
 
Автор
S

SkinWarS

Новичок
Сообщения
26
Репутация
0
syavak сказал(а):
ну тогда даже незнаю ) попробуй тут весь код выложить мож там чтото нетак

да если весь код выложить..там такая каша...я же его еще делаю....
 

Ksaan

Знающий
Сообщения
207
Репутация
15
SkinWarS сказал(а):
нет пример мне тот не помог, не работает и всё, также клацает по координатам КонтрКлика
Ну раз клацает то значит цвет находит тот что ты указал. Посмотри что еще PixelSearch показывает
 
Автор
S

SkinWarS

Новичок
Сообщения
26
Репутация
0
Ksaan сказал(а):
SkinWarS сказал(а):
нет пример мне тот не помог, не работает и всё, также клацает по координатам КонтрКлика
Ну раз клацает то значит цвет находит тот что ты указал. Посмотри что еще PixelSearch показывает

не находит он его...т.к. цвет меняется а он опять туда клацает, значит он клацает тупо по координатам
 

Ksaan

Знающий
Сообщения
207
Репутация
15
Ну тогда если ты знаешь координаты и цвет попробуй использовать
Код:
If Hex(PixelGetColor(34, 614), 6) = "Шестнадцатеричный цвет" Then
	MsgBox(0,"","Цвет найден")
Else
	MsgBox(0,"","Цвет ненайден")
EndIf
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
SkinWarS
после цвета идут не обязательные параметры
Вы неправильно представляете себе необязательные параметры. У функции PixelSearch() три необязательных параметра. Чтобы указать третий ($hWnd) вы ОБЯЗАНЫ указать оба предыдущих. edyapd в ответе #1 показал, как это сделать. У вас же $hWnd находится на месте shade-variation. А так как $hWnd значительно больше 255, то PixelSearch() находит пиксель ЛЮБОГО цвета.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
SkinWarS [?]
после цвета идут не обязательные параметры
Да, но после параметра color у вас идёт параметр hwnd, следовательно параметры shade-variation и step нужно указывать как default .
Код:
$coord = PixelSearch(34, 614, 34, 614, 0xFFB300, 0, 1, $hWnd )

И ещё:
Код:
AutoItSetOption("PixelCoordMode", ???)
AutoItSetOption("MouseCoordMode", ???)


Возможно, этот пример вам поможет разобраться.
Код:
#include <Array.au3>
#include <IE.au3>
Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)
$oIE = _IECreate("http://dragonlord.battleon.com/game/")
$oIE.Width = 1064
$oIE.Height = 866
$hWin = _IEPropertyGet($oIE, "hwnd")
$aColor = PixelSearch(483, 573, 557, 595, 0x320C07, 0, 1, $hWin)
If IsArray($aColor) Then
	MouseClick("left", $aColor[0], $aColor[1])
	Sleep(3000)
	MouseClick("left", $aColor[0], $aColor[1])
	Sleep(3000)
EndIf
_IEQuit($oIE)
 
Автор
S

SkinWarS

Новичок
Сообщения
26
Репутация
0
За пример спасибо, но он вылетает
+>11:44:53 AutoIt3.exe ended.rc:0
+>11:44:53 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 1.611

и еще я заметил что если после добавления цвета ставить 0,1 то у меня теряется привязка поиска к окну..тобишь поиск не работает в свернутом окне...да и ничего не работает)
 
Верх