먼저 내가 원하는 색상의 정확한 값을 구하는 방법은 하단 툴을 통해 구해올 수 있습니다.
Finder Tool 항목을 마우스 드래그 하여 해당 위치로 이동 시키면 mouse 의 Color 에서 숫자로 된 색상 값을 구해 올 수 있습니다.
특정 위치의 색을 추적하여 변하는 것을 인식하여 동작하는 툴을 제작하기 위해 쉽게 사용 가능한 함수는 PixelSearch 함수 입니다. 도움말에서 해당 함수를 찾아서 예제를 구해 옵니다. Autoit 편집기에서 빈 문서를 열고 예제 코드를 붙여 넣은 후 저장해주세요.
#include <MsgBoxConstants.au3>
; Find a pure red pixel in the range 0,0-20,300
Local $aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000)
If Not @error Then
MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
EndIf
; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000, 10)
If Not @error Then
MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
EndIf
코드 설명을 드리자면 PixelSearch 함수 뒤에 4개의 숫자는 추적 위치를 나타냅니다.
그 뒤에 숫자가 색상 값입니다. Finder Tool 에서 구한 색상 값을 여기 넣으면 됩니다.
현재는 마우스 위치가 메세지 박스로 표시 되지만 이 항목을 마우스 클릭으로 연결하면 해당 위치를 클릭하게 됩니다. ( 하단 스크립트는 메세지 박스를 주석처리하고 마우스 클릭으로 교체 하였습니다. )
Local $aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000)
If Not @error Then
;~ MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
MouseClick("left" , $aCoord[0] , $aCoord[1])
EndIf
색상 값을 미세하게 클릭하는 경우도 있지만 유사한 색을 추적하여 클릭할 때 사용 할 수도 있습니다. 두번째 예제는 이러한 유사한 값을 추적하여 클릭하는 항목 입니다. 유사한 값의 범위는 색상 값 뒤에 넣으면 됩니다.
만약 While 문과 함께 사용 한다면 특정 범위에서 내가 원하는 색이 나타나면 클릭 후 종료 되도록 사용 가능합니다. 하단 코드는 특정 구역에 찾고자 하는 색이 나타날 때 까지 확인하다가 색이 나타나면 클릭 후 종료되는 스크립트 입니다.
While 1
Local $aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000)
MouseClick("left" , $aCoord[0] , $aCoord[1])
ExitLoop
EndIf
Sleep(1)
WEnd
만약 특정 위치의 화면이 변화가 있는 경우 동작하는 코드를 넣고 싶으시다면 하단 내용을 참고하시면 됩니다.
'RPA 만들기 - 함수 사용법' 카테고리의 다른 글
[ Autoit ] For / While 반복 함수 사용하기(반복문) (0) | 2020.10.06 |
---|---|
[ Autoit ] 특정 위치의 색상 값 추출하기 (0) | 2020.10.05 |
[ Autoit ] 화면 색상 변화 인식하기 (0) | 2020.10.02 |
[ Autoit ] 중복 실행 방지 코드 만들기 (0) | 2020.10.02 |
[ Autoit ] 글자 형식 변경하기 (0) | 2020.09.22 |