Что нового

[Автоматизация] Функция проверки цвета

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
Код:
Func _CLICK($COOR)
	$ASPLIT = StringRegExp($COOR, "(\d+), (\d+), (\d+)" 1)
	$X = $ASPLIT[0]
	$Y = $ASPLIT[1]
	$col = $ASPLIT[2]
	if PixelGetColor($X, $y) = $col Then
		mouseclick($x, $Y)
	endif
EndFunc

while 1
	$test = "362, 388,0xAC8334"
	_click($test)
	
	WEnd

В чем ошибка?) :shok:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
edward_freedom
Код:
#include <Array.au3>

$sTest = "362, 388,0xAC8334"
$aSPLIT = StringSplit(StringStripWS($sTest, 8), ',', 2)
;$aSPLIT = StringRegExp($sTest, '(\d+),\s?(\d+),\s?(\d+.*)\z', 3)
_ArrayDisplay($aSPLIT)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
edward_freedom
Я немного поменял код.
 
Автор
E

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
madmasles
Шас буду сидуть думать,как в функцию засунуть :ok:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
edward_freedom [?]
как в функцию засунуть
Попробуйте так:
Код:
$sTest = '50, 490, 0xC2B9BC'
_CLICK($sTest)

Func _CLICK($sCOOR)
	Local $aSPLIT = StringSplit(StringStripWS($sCOOR, 8), ',', 2)
	;Local $aSPLIT = StringRegExp($sCOOR, '(\d+),\s?(\d+),\s?(\d+.*)\z', 3)
	If UBound($aSPLIT) <> 3 Then Return
	If Hex(PixelGetColor($aSPLIT[0], $aSPLIT[1]), 6) == Hex($aSPLIT[2], 6) Then
		MouseClick('left', $aSPLIT[0], $aSPLIT[1])
	EndIf
EndFunc   ;==>_CLICK
 
Автор
E

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
Код:
Func _CLICK($sCOOR)
   ; Local $aSPLIT = StringSplit(StringStripWS($sCOOR, 8), ',', 2)
    Local $aSPLIT = StringRegExp($sCOOR, '(\d+),\s?(\d+),\s?(\d+.*)\z', 3)
    If UBound($aSPLIT) <> 3 Then Return
    If PixelGetColor($aSPLIT[0], $aSPLIT[1]) == $aSPLIT[2] Then
        MouseClick("left", $aSPLIT[0], $aSPLIT[1])
    EndIf
EndFunc   ;==>_CLICK

madmasles :smile:
Работает отлично!Спасибо большое!!
 
Автор
E

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
Вот скоппировал полностью
Код:
#include <Array.au3>


Func _CLICK($sCOOR)
    ;Local $aSPLIT = StringSplit(StringStripWS($sCOOR, 8), ',', 2)
    Local $aSPLIT = StringRegExp($sCOOR, '(\d+),\s?(\d+),\s?(\d+.*)\z', 3)
    If UBound($aSPLIT) <> 3 Then Return
    If PixelGetColor($aSPLIT[0], $aSPLIT[1]) = $aSPLIT[2] Then
		mousemove($aSPLIT[0], $aSPLIT[1])
        mouseclick("left", $aSPLIT[0], $aSPLIT[1])
    EndIf
EndFunc   ;==>_CLICK
 


while 1
	 $test = "390, 178,0xF47879"
	_CLICK($test)
wend
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
edward_freedom
Я понял, почему у меня не работало. При использовании "==", оба значения конвертируются в строку, поменял на "=" и все заработало. ;)
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Регулярные выражения нужно использовать там где нужно, а тут отлично справится StringSplit
 
Верх