매크로

조회 수 202 추천 0 댓글 7
?이미지 서치
; seconds : 시간 지정 (기본설정상 1초 = 10번 시도, 0.5초 = 5번 시도함)
; imgX, imgY : 리턴받기 위해 사용
; fromX , fromY , toX , toY : 이미지 서치 범위 지정
; 리턴값 : 1 = 이미지 찾음 , 0 = 이미지 못찾음, -1 = 이미지 파일 없음
CheckImage(img, seconds=0.5, ByRef imgX="", ByRef imgY="", fromX=0, fromY=0, toX=0, toY=0) {
? ? global ActiveID, DebugMode
CoordMode, Pixel, Screen
? ? Sleep, 10

? ? If ( ActiveID)
? ? ? ? WinGetPos, winX, winY, winW, winH, % ActiveID
? ? Else
? ? ? ? winX := 0, winY := 0, winW := A_ScreenWidth, winH := A_ScreenHeight

? ? sleepTime := 100
? ? times := seconds * (1000 / sleepTime)
? ? If ( times=0)
? ? ? ? times := 1

? ? x := winX, y := winY, w := winX+winW, h := winY+winH
? ? If (fromX && fromY && toX && toY)
? ? {
? ? ? ? w := x+toX, h := y+toY, x := x+fromX, y := y+fromY

? ? ? ? If ( DebugMode = 1)
? ? ? ? {
? ? ? ? ? ? ToolTip, 범위시작, x, y, 11
? ? ? ? ? ? ToolTip, 범위끝, w, h, 12
? ? ? ? }
? ? }




여기서 이해가 잘안가는대요 seconds를 0으로두면 ?time이 1로 되고 0.5 면 5 로되는대
저 time이 검색하는 횟수인가요?
그렇다면 높은 숫자를 넣을수록 정확도가 높아지는건가요?


  • theruin 2015.04.22 07:01

    Loop, %times%

    ? ? {

    ? ? ? ? ImageSearch, oX, oY, x, y, w, h, *50 %A_ScriptDir%\%img%

    ? ? ? ? If ( ErrorLevel = 0)

    ? ? ? ? {

    ? ? ? ? ? ? imgX := oX

    ? ? ? ? ? ? imgY := oY

    ? ? ? ? ? ? If ( DebugMode = 1)

    ? ? ? ? ? ? {

    ? ? ? ? ? ? ? ? ToolTip, %img%, imgX, imgY, 10

    ? ? ? ? ? ? }

    ? ? ? ? ? ? Return 1

    ? ? ? ? }

    ? ? ? ? Else If ( ErrorLevel = 2)

    ? ? ? ? {

    ? ? ? ? ? ? MsgBox, , , 이미지 없음 : %img% , 1

    ? ? ? ? ? ? Return -1

    ? ? ? ? }

    ? ? ? ? Sleep, %sleepTime%

    ? ? }

    ? ? Return 0


  • theruin 2015.04.22 07:03
    함수를 가져 오시려면 끝까지 가져오 셨어야죠 아무리봐도 사용하는데가 없어서 이상하다고 생각했더니 뒤에 남은 부분이 있네요.

    지금 보면

    times := seconds * (1000 / sleepTime)
    이걸로 times 을 구하고

    Loop, %times%

    여기에 사용하죠 Loop 횟수에 사용되네요 몇번 서치하는가군요
  • profile
    외치기 2015.04.22 09:31
    ? ? If ( times=0)
    ? ? ? ? times := 1
    추가로 이부분을 보시면 time이 0일경우 1로 바꿔줍니다.
    무한루프를 막기위해서죠.
  • 모바게 2015.04.22 19:09

    상단에 설명부분에

    ; seconds : 시간 지정 (기본설정상 1초 = 10번 시도, 0.5초 = 5번 시도함)

    이라고 되어있습니다.

  • profile
    pervm 2015.04.22 20:21
    그러니까 시간지정을 높게 해놓으면 놓을수록 많이 시도하는대 그만큼
    엑시큐트하는 시간이 늘어나는거내요?
  • 모바게 2015.04.22 21:21

    10초동안 찾으라고 했을 경우라도, 첫회에 성공하면 바로 결과를 넘겨줍니다.
    당연히 못찾을 경우에는 10초동안 찾으니까 최소 실행시간은 10초가 되겠죠? 기본설정대로 하면 100번 찾는 시도를 할테고요..
    어려운가요? 흠..
    많이 시도하면 당연히 실행시간 증가하는건데..

    PC사양이나 네트워크 상황등에 따라서 화면이 로딩되거나 변경되는 시간이 각각 다르므로, sleep문으로 일정시간 쉬는 것 보다는 조금 더 정 확도가 있다고 생각해도 상관없습니다만..

    화면상 이미지 서치의 정확도와는 아무 연관이 없습니다..

  • profile
    pervm 2015.04.22 22:21
    설명감사합니다 모바게님.
    그렇다면
    시간을 높게잡아주고 sleep 문을 없애도 문제가 없는건가요?
    아니면 시간을 높게잡고 sleep문 시간을 낮게하는건가요?

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 기본 연산자 기호관련해서 질문드려요 15 우후훅 2015.04.17 0/0
질문 블택윈도우화면 위로 Gui 텍스트 글자 보이게 하기 3 제주소나이 2015.04.22 0/0
질문 변수 질문 5 암드래 2015.07.16 0/0
질문 모바게님 비활성 이미지클릭 간소화 함수 질문요 6 두더지 2015.04.17 0/0
질문 구현가능한지 질문드려요. 15 흑콘 2015.04.20 0/0
질문 Ctrl + Click or Ctrl + wheel 가르쳐 주세요. 7 theruin 2015.04.20 0/0
질문 reload 관련 자료 찾아보아도 나오지 않아 질문드립니다. 13 프로도신 2015.04.20 0/0
질문 gdip에 대해 궁금한데요. 13 우후훅 2015.04.27 0/0
질문 오토핫키 질문입니다. 3 anahen 2015.04.20 0/0
질문 구이실행시 정지 질문드립니다. 3 푸른호수 2015.04.20 0/0
질문 Shell.Explorer 새로고침? 13 _Crash 2015.04.21 0/0
질문 gui창 2개 중 1번 gui창에서 확인하면 닫아지면서 2번 ... 7 Rabbit 2015.04.21 0/0
질문 오토핫키 명령어 질문 6 papepo 2015.04.21 0/0
질문 FileInstall 관련 질문 41 USW 2016.10.29 0/0
질문 지니 이용한 쿠키런 매크로있으신분... 2 댕고링 2015.04.23 0/0
질문 다시한번 질문드릴게요. 가상화관련 4 USW 2015.04.23 0/0
질문 모바게님 이미지서칭함수 오차율 질문 7 pervm 2015.04.22 0/0
질문 비활성 이미지 클릭 질문입니다 2 시원짱 2015.04.23 0/0
질문 자기자신말고 다른오토핫키프로그램 모두종료 3 _Crash 2015.04.24 0/0
질문 GDI 캡쳐 관련해서 질문 드립니다. 5 인형 2015.04.23 0/0
Board Pagination Prev 1 ... 252627282930313233 ... 172 Next
/ 172

전체 최신 인기글

전체 주간 인기글