오토핫키(AutoHotKey) 기초강좌 #5 - 매크로 프로그래밍 3 (Gui Submit)




 전체 강좌

 1강 - 오토핫키(AutoHotKey) 소개

 2강 - 프로그래밍의 시작, GUI 만들기

 3강 - 매크로 프로그래밍 1 (Button, Loop, if 사용법)

 4강 - 매크로 프로그래밍 2 (ImageSearch, Send, Sleep)

 5강 - 매크로 프로그래밍 3 (Gui Submit)

 6강 - 매크로 만들기 응용 1 (if 응용, CoordMode)

 7강 - 매크로 만들기 응용 2 (핫키, if 응용)

 8강 - 매크로 만들기 응용 3 (While, GUI와 변수의 활용 1)

 9강 - 매크로 만들기 응용 4 (GUI와 변수의 활용 2)

 10강 - 매크로 만들기 응용 5 (함수1)

 11강 - 매크로 만들기 응용 6 (함수2)

 12강 - 매크로 제작 예제
















안녕하세요~ 킴영감입니다.


지난시간까지 매크로 프로그램의 기본적인 틀을 만들어 봤습니다. 


이번 강좌에는 응용방법에 대해 포스팅 하려고 했지만 Gui Submit을 이해하시는데 시간이 필요할 것 같아 사용방법을 조금 자세히 알려드리고 다음 강좌부터 응용에 대한 내용을 포스팅 하려고 합니다.


두번째 강좌에서 GUI의 기능 중 Button과 Text에 관해서 배웠습니다. 


GUI는 화면을 구성하기위한 많은 요소들을 가지고 있으며 이번 강좌에서는 프로그램 상에서 변경된 구성을 화면에 업데이트하는 방법을 알려드리겠습니다. 우리는 이 기능을 매크로 동작과 클리어 횟수를 업데이트할때 써야합니다.


우선 사용방법을 알려드리겠습니다.


 Gui, Submit, nohide

 GuiControl, , 변수, 값


Gui를 업데이트 하고싶은 부분에 위와같이 작성하시면 됩니다.


변수 부분에는 2강에서 텍스트 GUI를 만들때 할당한 변수를 적어주시면 되고, 값 부분에는 그 변수에 할당할 값을 적어주시면 됩니다.


그럼 코드를 작성해 보겠습니다.


지난시간까지 작성한 스크립트를 불러오신 뒤 아래와 같이 작성하세요.



빨간 박스로 표시된 Gui 코드에 vAvB가 사용할 변수입니다. 오토핫키에서 변수는 여러가지 형태로 사용할 수 있지만 우리는 "v + 변수 명" 또는 "변수 명"의 형태로만 사용할 것이며, Gui에 할당되는 별수는 "v + 변수명"을 매크로 내부에서 값을 가지는 변수는 "변수명"의 형태로만 사용할 것입니다.

매크로의 동작상태를 표시해줄 변수를 vA, 클리어 횟수를 표시해줄 변수를 vB라고 정했습니다. (이전 강좌에 vB가 빠져있으니 추가하시기 바랍니다.)


Button시작 아래에 있는 빨간 박스에 오늘 배운 Gui Submit의 코드가 있습니다. 시작버튼을 누르면 vA에 "시작" 이라는 글자를 표시하게 됩니다. 위에서 설명한 사용방법과 같이 변수명에 A를 (변수를 사용할때는 v를 빼고 사용합니다.), 값을 적는 부분에는 "시작"이라는 텍스트를 적었습니다. 

F5를 눌러 매크로를 실행시켜 시작버튼을 눌렀을 때 "준비!!!" 에서 "시작"으로 글자가 바뀌면 잘 따라오신 겁니다.


똑같은 방법으로 클리어 횟수를 카운팅하는 코드를 작성 해 보겠습니다.

아래 그림과 같이 코드를 추가하세요.



먼저 시작버튼을 누른 뒤 클리어 횟수가 몇번인지 저장해 놓을 변수가 필요합니다. 시작버튼을 눌렀을 때 위쪽에 있는 빨간박스와 같이 "클리어횟수"라는 이름의 변수를 만들고 그 안에 "0"을 저장했습니다.

다음으로 "3.bmp"이미지를 눌렀을 때 던전을 클리어 했다고 가정하고 아래의 빨간 박스와 같이 코드를 추가했습니다.

클리어횟수 변수가 기존에 가지고 있던 값에 1을 더해서 다시 클리어횟수 변수에 저장을 했습니다. 그 다음 Gui Submit을 이용해 변수 B에 클리어횟수 변수가 가지는 값에 "회"를 붙여서 표시했습니다.


이렇게 해서 기초적인 매크로 제작방법에 대해서 모두 알아봤습니다.



그럼 이를 어떻게 게임에 적용해야 할까요??


기능이 많은 매크로는 오늘까지 배운 내용으로는 만들 수 없습니다. (다음시간부터 다룰 것입니다.)

하지만 단순히 던전만 반복해서 돈다면 충분이 가능합니다. 

두번째 강좌에서 다뤘던 순서도를 살펴봅시다.


시작클릭과 다시하기클릭을 반복합니다. 여기서 중요한 점은 서로 겹치는 화면이 없다는 것입니다. 시작클릭 이미지가 있는 화면에서는 다시하기클릭 이미지가 없고, 반대로 다시하기클릭 이미지가 있는 화면에서는 시작클릭 이미지가 없다는 뜻입니다. 이는 우리가 배운대로 이미지를 찾는 코드를 나열하는 것 만으로도 충분히 구현할 수 있음을 의미합니다.


마지막으로 오늘까지의 내용으로 작성한 코드로 매크로를 돌릴때에는 게임 화면이 활성화 되어 있어야 한다는 것 꼭 명심하시기 바랍니다. (응용편에서 활성화 되지않아도 찾을 수 있도록 하는 코드에 대해 다룰 것입니다.)


이제 확인할 일만 남았습니다. 제가 작성한 코드로 아이콘 이미지를 찾아 클릭하도록 해서 동영상을 촬영했습니다.




아이콘의 이미지를 캡쳐해서 각각 "1.bmp", "2,bmp", "3.bmp"로 저장한 뒤 매크로를 실행시켰습니다.

우리가 함께 작성한 코드와 같이 시작버튼을 눌렀을 때 "준비!!!"가 시작으로 바뀌는 것과 각각의 이미지를 찾아 클릭하는 것을 확인하실 수 있으며 3번째 이미지를 클릭할 때 횟수를 카운팅 하는 것을 확인하실 수 있습니다.



강좌를 보시는분 각자 적용해보시고 해냈다는 쾌감을 느끼시길 바랍니다.


이상으로 5번째 강좌를 마치겠습니다.

블로그 이미지

킴영감

프로그래밍과 게임공략, 게임과 관련된 프로그램에 대한 내용을 다룹니다.

댓글을 달아 주세요

  • 이전 댓글 더보기
  • 왕진 2015.12.22 00:55  댓글주소  수정/삭제  댓글쓰기

    지금제가 바탕화면에 PPP폴더를 만들어서 그폴더안에 스크립트 파일을 넣고 PPP폴더 하위폴더로
    IMAGE라는 폴더를 만들어서 그안에 이미지파일과 그이미지캡쳐뜬 찾고자하는 파일들을 같이 넣어놨습니다.
    영상을 보니 그렇게 되어있어서 스크립트를 다시 제작하여 영상과 똑같이 만들었는데..
    역시..준비~시작!! 까지는 되는데 찾지는 못하더라구요 그래서 갑자기든생각인데..
    제가 노트북으로 사용합니다 윈도우는 10이구요
    그리구 노트북본연의 모니터를 사용하지않고 HDMI와 RGB를 연결하여 2모니터를 사용하는데
    이게 문제가 될런지요..?
    제가 글보다가 어디서 듀얼모니터를사용할때에 뭘 주의하라고 봤었는데..혹..상관이있나요?

  • 왕진 2015.12.22 02:17  댓글주소  수정/삭제  댓글쓰기

    질문을많이하게되네요..
    지금어찌어찌하다가..클릭도하고 카운팅도 숫자가 올라가는데
    이미지를 찾아서 마우스는 안움직이네요..
    그냥마우스 클릭만 하는것같고 카운팅만 올라가는데..왜..이런걸까요?
    코드에는
    ;ImageSearch, FoundX, FoundY, 0,0, A_Screenwidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\1.bmp
    if(Errorlevel = 0)
    {
    send {click &FoundX& %FoundY%}
    sleep, 1000
    }
    원래 이미지서치앞에 ; 이걸 안붙였는데 붙이니까 갑자기 클릭하면서 카운팅은되고
    마우스는 가만히있고..그러네요..

    • 킴영감 2015.12.30 18:21 신고  댓글주소  수정/삭제

      위에서 질문하신 내용을 함께 답변드리겠습니다.
      우선 제일 위에 있는 질문의 코드는 문제가 없어보입니다.
      듀얼 모니터를 쓰신다면 지금까지 내용으로는 주모니터에서만 사용 가능합니다.
      마지막 질문의 답변을 드리면 코드앞에 ;을 붙이시면 안됩니다. ;의 의미는 주석처리이며 주석처리된부분은 무시하고 넘어가게됩니다.
      이미지를 찾고자 하는 프로그램을 주모니터에 두시고 프로그램을 클릭하셔서 활성화 시킨다음 매크로를 실행해보시기 바랍니다.^^

  • CHEKI 2016.01.25 19:28  댓글주소  수정/삭제  댓글쓰기

    {
    Send {click %FoundX% %FoundY%}
    Sleep, 1000
    클리어횟수 := 클리어횟수 + 1
    Gui,Submit,NoHide
    GuiControl, , B, %클리어횟수% 회
    }

    요렇게 설정해뒀을때 click (위에서 첫째줄) 횟수를 변경시킬 이미지를 클릭하게 되지 않을까요?

    • 킴영감 2016.01.27 15:11 신고  댓글주소  수정/삭제

      음...질문이 완벽히 이해는 안되지만 답변드리면
      FoundX와 FoundY에는 바로 위에서 찾은 이미지의 좌표가 들어가 있기 때문에 바로위에서 찾은 이미지를 클릭하게 됩니다^^

  • CHEKI 2016.01.25 19:45  댓글주소  수정/삭제  댓글쓰기

    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램
    Gui, Add, Text, x60 y25 w50 h20 vA, 준비!!!
    Gui, Add, Text, x60 y50 w50 h20 vB, 0 회
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show

    매크로시작 := false

    return

    Button시작:
    {
    Gui,Submit,NoHide
    GuiControl, , A, 시작

    매크로시작 := ture
    클리어횟수 := 0
    Loop
    {

    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 C:\Users\kakao\Pictures\Auto Script\레이븐\탐험시작.PNG
    if (ErrorLevel = 0)
    {
    Send {click %FoundX% %FoundY%}
    Sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 C:\Users\kakao\Pictures\Auto Script\레이븐\다시하기.PNG
    if (ErrorLevel = 0)
    {
    Send {click %FoundX% %FoundY%}
    Sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 C:\Users\kakao\Pictures\Auto Script\레이븐\횟수.PNG
    if (ErrorLevel = 0)
    {
    Send {click %FoundX% %FoundY%}
    Sleep, 1000
    클리어횟수 := 클리어횟수 + 1
    Gui,Submit,NoHide
    GuiControl, , B, %클리어횟수% 회
    }

    if(매크로시작 = false)
    {
    break
    }
    }
    }
    return

    Button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return

    !!아차 그리고 이렇게 해두었는데 1판 돌리면 횟수는 클리어횟수 + 2 가 되네요 ㅠㅠ

    • 킴영감 2016.01.27 15:14 신고  댓글주소  수정/삭제

      아마도 클리어 횟수를 카운트 화면에서 1초 이상 머무르고 있어서 그런 것 같습니다. 코드상에 문제는 없으며 클리어횟수를 카운트하는 부분의 Sleep을 화면이 전환되는 시간에 맞춰 늘려주시면 똑바로 동작할 것 같습니다^^

  • 2016.05.21 19:37  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 킴영감 2016.05.23 09:27 신고  댓글주소  수정/삭제

      우선 다음부터는 홈페이지를 통해서 질문해주시기 바랍니다^^

      스크립트상에는 문제가 없어보이며 스크립트에 문제가 없을 경우에는 이미지가 문제일 확률이 높습니다.
      못찾는 이미지를 다시한번 캡쳐해보시기 바랍니다.^^

  • 홍또띠 2016.08.04 02:08  댓글주소  수정/삭제  댓글쓰기


    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램
    Gui, Add, Text, x60 y25 w50 h20 vA, 준비!!!
    Gui, Add, Text, x60 y50 h20 w50 vB, 0 회
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show

    매크로시작 := false

    return

    Button시작:
    {
    Gui,Submit,nohide
    GuiControl, , A, 시작

    매크로시작 := true
    클리어횟수 := 0

    Loop
    {

    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\1.bmp
    If (ErrorLevel = 0)
    {
    send {Click &FoundX% %FoundY%}
    Sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\2.bmp
    If (ErrorLevel = 0)
    {
    send {Click &FoundX% %FoundY%}
    Sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\3.bmp
    If (ErrorLevel = 0)
    {
    send {Click &FoundX% %FoundY%}
    Sleep, 1000
    클리어횟수 := 클리어횟수 + 1
    Gui,Submit,nohide
    GuiControl, , B, %클리어횟수% 회
    }
    If(매크로시작 = false)
    {
    break
    }
    }

    }
    return

    Button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return



    오류뜹니다 뭐가 문제 입니까 정말 열심히 첫도전해봤습니다.

  • 넘나도감사합니다. 2016.11.21 22:16  댓글주소  수정/삭제  댓글쓰기

    저기 위에 동영상 올려놓으신거요.. 저는왜 1.bmp 2.bmp 이거 그림파일을 클릭할까요? 아래에있는 아이콘은 클릭안하고 캡쳐한 이미지파일을 클릭하네요..

  • 호호빙수 2017.05.17 10:01  댓글주소  수정/삭제  댓글쓰기

    아래와 같이 코딩하면 시작으로 변경되는데 시작을 누르면 가만히 있습니다. ㅜㅜ 마우스를 움직이게 해주세요~
    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램
    Gui, Add, Text, x60 y25 w50 h20 vA, 준비!!!
    Gui, Add, Text, x60 y50 w50 h20, 0 회
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show

    매크로시작 := false

    return

    Button시작:
    {

    Gui,Submit,NoHide
    GuiControl, , A, 시작

    매크로시작 := true
    클리어횟수 := 0

    Loop
    {
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *30 F:\개인\오토핫키\Image\1.bmp
    if (ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *30 F:\개인\오토핫키\Image\1.bmp
    if (ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *30 F:\개인\오토핫키\Image\1.bmp
    if (ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000
    클리어횟수 := 클리어횟수+1
    Gui,Submit,NoHide
    GuiControl, ,B, %클리어횟수%
    }

    if(매크로시작 = false)
    {
    break
    }
    }
    }
    return

    Button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return

  • 부엉박사님 2018.03.11 01:31  댓글주소  수정/삭제  댓글쓰기

    코드를 최대한 간단하게 그대로 따라해보아도 도저히 그림을 찾지 못하네요.. 경로도 스크립트 폴더 하위에 image 넣고 24비트 bmp파일 넣었습니다. 위치도 C드라이부터 바탕화면 등등 다 바꿔서 해보았고, 정확도도 *30 ~ *200까지 해봤는데 인식을 못하네요.. ㅠㅜ
    이틀째 고생했습니다. 도대체 원인이 뭔지 모르겠어서 병걸릴 거 같습니다.. 도와주십쇼..

    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램
    Gui, Add, Text, x60 y25 w50 h20 vA, 준비!!
    Gui, Add, Text, x60 y50 w50 h50 vB, 0회
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show

    매크로시작 := false

    return

    Button시작:
    {
    매크로시작 := true
    Loop
    {
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\image\file.bmp
    if(ErrorLevel = 0)
    {
    MsgBox, 이미지를 찾았습니다11.
    Send {Click %FoundX% %FoundY%}
    Sleep, 2000
    }
    else
    {
    MsgBox, 이미지를 못찾았습니다.
    }
    }

    }
    return

    Button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return

    • 부엉박사님 2018.03.11 01:42  댓글주소  수정/삭제

      이미지를 찾지 못했습니다 (ErrorLevel=1) 문구만 계속 돌고 이미지를 인식하지 못하는 상태입니다 ㅠㅜ

    • 킴영감 2018.03.14 20:23 신고  댓글주소  수정/삭제

      스크립트에 문제가 없어보이네요.^^
      CoordMode를 설정 안해주시면 이미지를 찾을 창이 활성화 되어있어야지 이미지를 찾습니다.
      스크립트를 실행시키시고 이미지 찾을 창을 활성화 하시거나
      매크로시작 := true 아래에
      CoordMode, Pixel, Screen
      CoordMode, Mouse, Screen
      을 추가해보시기 바랍니다.^^

  • 사용자 2018.03.15 20:15  댓글주소  수정/삭제  댓글쓰기

    하나부터 열가지 전부 따라해봤는데 이미지 서칭이 하나도 안 됩니다.
    어떻게해야할까요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ


    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램
    Gui, Add, Text, x60 y25 w50 h20 vA, 준비!!!
    Gui, Add, Text, x60 y50 w50 h20 vB, 0회
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show

    매크로시작 := false

    return

    Button시작:
    {
    Gui,Submit,nohide
    GuiControl, , A, 시작

    매크로시작 := ture
    클리어횟수 := 0

    Loop
    {
    ;여기서 무한 반복할 작업의 코드를 작성합니다.
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\1.bmp
    if (ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%} ; 찾은 좌료를 클릭합니다.
    Sleep, 1000 ; ms 단위입니다.
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\2.bmp
    if (ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%} ; 찾은 좌료를 클릭합니다.
    Sleep, 1000 ; ms 단위입니다.
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\3.bmp
    if (ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%} ; 찾은 좌료를 클릭합니다.
    Sleep, 1000 ; ms 단위입니다.
    클리어횟수 := 클리어횟수 + 1
    Gui,Submit,nohide
    GuiControl, , B, %클리어횟수% 회
    }
    if(매크로시작 = false)
    {
    break
    }
    }
    }
    return

    Button종료:
    {
    매크로시작 := falsw
    ExitApp
    }

  • Naloo98 2018.05.24 18:47  댓글주소  수정/삭제  댓글쓰기

    열심히 보고 있습니다. 감사드려요..
    음.. 댓글 참고해서

    1. CoordMode 부분도 추가해 보고,
    2. 관리자모드로 실행도 해보고,
    3. 탐색기 창도 활성화해 봤는데.

    도무지 동영상 처럼 실행이 안되네요. 한번만 봐주세요..ㅠㅠ Windows10사용자 입니다.

    ----------------------- 소스 첨부합니다. -----------------

    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램 ; 프로그램 제목 표시
    Gui, Add, Text, x60 y25 w50 h20 vA, 준비!!! ; 현재 상태 표시
    Gui, Add, Text, x60 y50 h20 w50 vB, 0회 ; 0회
    Gui, Add, Button, x20 y80 w110 h20, 시작 ; 시작버튼
    Gui, Add, Button, x20 y110 w110 h20, 종료 ; 종료버튼
    Gui, Show

    매크로시작 := false

    return

    Button시작:
    {
    Gui, Submit, nohide
    GuiControl, , A, 시작

    매크로시작 := true

    CoordMode, Pixel, Screen
    CoordMode, Mouse, Screen

    클리어횟수 := 0
    Loop
    {
    ;이미지 찾는 코드 정확도 (*50 --> 클수록 정확도가 떨어짐)
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\1.bmp
    if (ErrorLevel = 0) ;이미지를 찾았으면..
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000
    }

    ;이미지 찾는 코드 정확도 (*50 --> 클수록 정확도가 떨어짐)
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\2.bmp
    if (ErrorLevel = 0) ;이미지를 찾았으면..
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000
    }

    ;이미지 찾는 코드 정확도 (*50 --> 클수록 정확도가 떨어짐)
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\3.bmp
    if (ErrorLevel = 0) ;이미지를 찾았으면..
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000

    클리어횟수 := 클리어횟수 +1
    Gui, Submit, nohide
    GuiControl, , B, %클리어횟수% 회
    }

    if(매크로시작 = false)
    {
    break
    }
    }
    }
    return

    Button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return

    • 킴영감 2018.05.25 00:14 신고  댓글주소  수정/삭제

      음...스크립트에 문제가 없으니 이미지서치에 사용되는 이미지를 잘못만드신 경우밖에 없을 것 같습니다.ㅠ
      아직까지는 환경이 상관이 없거든요.ㅠ
      동영상에 나오는 것 처럼 아이콘 이미지에서 벗어나지 않도록 자르서야 합니다.^^

    • Naloo98 2018.05.25 10:46  댓글주소  수정/삭제

      오토핫키의 이해 부족으로 생긴 오류네요..ㅎㅎ
      ImageSearch라는게 현재 화면에서 내가 캡쳐해놓은 거랑 같은 부분을 찾는 거군요? ( 전 이미지파일만 찾아 내는 기능인줄알고.. 탐색기 열어놓고 왜 내가 만든 bmp파일들을 못찾을까? 라고 생각했습니다. ㅋㅋ)

      현재 화면 켜놓고 캡쳐한 부분을 1,2,3.bmp 로 만들어서 실행하니 잘되네요..

      저처럼 완전 초보인 분은 이강좌를 참고하세요
      킴영감님 유튜브 -->
      https://www.youtube.com/watch?v=1Z5ZQ-YwUqA

      감사합니다.

  • 2018.12.18 00:57  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 2018.12.18 02:06  댓글주소  수정/삭제

      혹시 밑에
      >"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "C:\Users\Win10\Desktop\매크로.ahk"
      >Exit code: 0 Time: 1.642
      >Exit code: 0 Time: 4.388

      이렇게 뜨는데 이거랑 연관이 있는걸까요?

  • 2018.12.18 03:50  댓글주소  수정/삭제  댓글쓰기

    이제 시작되긴하는데 이미지서치로 녹스 화면 놔두고 가만히있으면 반응이 없다가 클릭한번 하는순간 광클이 됩니다..ㅜㅜ
    뭐가 문제일까요
    Gui, add, text, x30 y5 w110 h20, 자동사냥
    gui, add, text, x60 y25 w50 h20 vA, 준비
    gui, add, text, x60 y50 w50 h20 vB, 0회
    Gui, add, button, x20 y80 w110 h20, 시작
    Gui, add, button, x20 y110 w110 h20, 종료
    gui, show


    매크로시작 := false

    return

    Button시작:
    {
    gui,submit,nohide
    guicontrol, , A, 시작

    매크로시작 := true
    coordmode, pixel, screen
    coordmode, mouse, screen
    클리어횟수 := 0

    Loop
    {
    ImageSearch, FoundX, FoundY, 0,0, A_Screenwidth, A_Screenheight, *10 %A_ScriptDir%\Image\유령선.BMP
    if (ErrorLevel = 0)
    {
    send {click %foondx% %foundy%}
    sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_Screenwidth, A_Screenheight, *10 %A_ScriptDir%\Image\공격.BMP
    if (ErrorLevel = 0)
    {
    send {click %foondx% %foundy%}
    sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_Screenwidth, A_Screenheight, *10 %A_ScriptDir%\Image\출항.BMP
    if (ErrorLevel = 0)
    {
    send {click %foondx% %foundy%}
    sleep, 1000
    }
    클리어횟수 := 클리어횟수 + 1
    gui,submit,nohide
    GuiControl, , B, %클리어횟수% 회
    if(매크로시작 = false)
    {
    break
    }
    }


    }
    return


    Button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return

  • 2018.12.18 09:59  댓글주소  수정/삭제  댓글쓰기

    문제 찾아서 다 해결했습니다..ㅜㅜ
    근데 이게 문제가 녹스 게임화면에선 아예 인식을 못하는거더라구요 녹스 바탕화면에서는 인식이 되는데.. 어떻게 해결해야할까요?ㅜㅜ

  • 2018.12.18 10:02  댓글주소  수정/삭제  댓글쓰기

    찾은 이미지에서 오른쪽위로 얼마 이렇게 이동후 클릭이 궁금합니다 ㅎㅎ
    그리고 이미지 파일에 넣은 건 인식이 되는데 게임내에선 인식이 안되는건 무슨 문제일까요?ㅜㅜ

    • 킴영감 2018.12.18 12:33 신고  댓글주소  수정/삭제

      우선 제 유튜브 가셔서 기초강의를 보시면 원하시는 것을 다 얻으실 수 있을겁니다.
      이미지 캡쳐해서 찾을 이미지 만드실 때 캡쳐는 어떤방법으로 하셨나요?

    • 2018.12.18 13:50  댓글주소  수정/삭제

      캡쳐는 캡처도구로도 해보고 프린트스크린으로 바로 넣어도 봤는데 둘다 안되더라구요 캡처도구는 png로 해서 했습니다

    • 킴영감 2018.12.18 14:57 신고  댓글주소  수정/삭제

      키보드에 있는 프린트스크린샷으로 하시고 이미지는 24비트 비트맵으로 저장해보시기 바랍니다.

  • 2018.12.19 11:42  댓글주소  수정/삭제  댓글쓰기

    그렇게해도 안되면 어떡하죠.. 흠 ㅜㅜ 배경이 다 달라서 그런거같긴한데

  • 강삼성 2018.12.19 15:09  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.
    동영상 보고 질문 할곳 찾다가
    이곳에 질문 합니다.

    네이버 로그인 내용 질문입니다.

    Error: parameter #1 invalid
    specifically : 1

    line#
    }
    ImageSearch, id_x, id_y, 0, 0, A_ScreenWidth, A_ScreenHeight, *30 img/naver_logo.JPG
    if errorlevel = 0
    {
    id_x := id_x + 31
    id_y := id_y + 97

    MouseMove, %id_x%, %id_y%
    ---> MouseClick, 1
    }

    The program will exit

    이렇게 나오는데 문제가 뭘까요?

    그리고 지금
    네이버 로그인 창이 바뀌어서
    어떻게 해야 할지 좀 가르쳐 주세요.

    • 킴영감 2018.12.19 15:50 신고  댓글주소  수정/삭제

      MouseClick 명령어에 사용되는 값이 잘못되었다는 에럽니다.
      명령어 사용법을 공부하고 사용하셔야겠네요.
      로그인창이 바뀐건 뭘 가르쳐달라는 건가요?

  • 황승재 2019.02.02 21:32  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 킴영감님 강좌 시청중인 오토핫키 초보자 입니다. 다름이 아니라 위에 가르쳐주신대로 스크립트를 작성하고 스크립트 저장 위치에 이미지를 저장한 후 매크로를 돌리니까 클릭을 하지 않습니다. 혹시 좀 도와주실 수 있으신가요?
    제가 작성한 스크립트는 다음과 같습니다.


    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램
    Gui, Add, Text, x60 y25 w50 h20 vA, 준비!!!
    Gui, Add, Text, x60 y50 h20 w50 vB, 0 회
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show

    return

    Button시작:
    {
    Gui,Submit,NoHide
    GuiControl, , A, 시작

    매크로시작 := true
    클리어횟수 := 0

    Loop
    {
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\1.jpg
    if(ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\Image\2.jpg
    if(ErrorLevel = 0)
    {
    Send {Click %FoundX% %FoundY%}
    Sleep, 1000
    클리어횟수 := 클리어횟수 + 1
    Gui,Submit,NoHide
    GuiControl, , B, %클리어횟수% 회
    }

    if(매크로시작 = false)
    {
    break
    }
    }

    }
    return

    Button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return


  • roto1212@naver.com 2019.02.14 12:24  댓글주소  수정/삭제  댓글쓰기

    Gui, Add, Text, x30 y5 w110 h20, 매크로 프로그램
    gui, add, text, x60 y25 w50 h20 vA, 준비!!
    gui, add, text, x60 y50 h20 w50 vB, 0회
    gui, add, button, x20 y80 w110 h20, 시작
    gui, add, button, x20 y110 w110 h20, 종료
    gui, show

    매크로시작 := false

    return

    button시작:
    {
    gui, submit, nohide
    GuiControl, , A, 시작

    매크로시작 := true
    클리어횟수 := 0

    Loop
    {
    ImageSearch, FoundX, FoundY, 0,0, A_screenWidth, A_ScreenHeight, *50 %A_scriptDir%\Users\POWERPC01\Desktop\image\1.bmp
    if (Errorlevel = 0)
    {
    send {Click %FoundX% %FoundY%}
    sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_screenWidth, A_ScreenHeight, *50 %A_scriptDir%\Users\POWERPC01\Desktop\image\2.bmp
    if (Errorlevel = 0)
    {
    send {Click %FoundX% %FoundY%}
    sleep, 1000
    }
    ImageSearch, FoundX, FoundY, 0,0, A_screenWidth, A_ScreenHeight, *50 %A_scriptDir%\Users\POWERPC01\Desktop\image\3.bmp
    if (Errorlevel = 0)
    {
    send {Click %FoundX% %FoundY%}
    sleep, 1000
    클리어횟수 := 클리어횟수 + 1
    gui, submit, nohide
    GuiControl, , B, %클리어횟수% 회
    }
    if(매크로시작 = false)
    {
    break
    }
    }

    }
    return

    button종료:
    {
    매크로시작 := false
    ExitApp
    }
    return

    준비!!! - > 시작 이것만 되고 아무고토 안되요 ㅜㅜ

  • 2019.04.22 21:35  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다