매크로

조회 수 1351 추천 0 댓글 15
이제 막 오핫키에 입문한 초보 입니다.?
게시판에서 여러 고수분들이 올려주신 강좌 및 팁으로 열심히 공부 하는중인데요?

adb와 Gdip 를 사용하여 지니모션 스크린샷을 컴퓨터로 가져와서?
기존에 설정되잇는 이미지를 확인 후에 맞다면 터치 아니라면 아니라는 메시지를 띄우고 싶은데?

기존의 우후훅님이 올려주신 스크립트로 이미지를 찾고서 adb로 터치 명령어를 보내는 것까지는 왔는데요?
아니라면 아니다 라는 메시지를 띄울려면 어디를 손을 봐야 할까요??


아! 그리고 우후훅 님 스크립트를 보면 중간에?

if (RET)

{return ture}?

가 있던데 이건 어떤 역활인지도 궁금합니다 !


#Include Gdip.ahk

end::exitapp

F4::
GSearch("1")
Gtouch()

;==========함수
GSearch(img)
{
global ip,gxy
gdipToken := Gdip_Startup()

RunWait, adb.exe shell screencap -p /sdcard/bg.png
RunWait, adb.exe pull /sdcard/bg.png

bmpHaystack := Gdip_CreateBitmapFromFile("bg.png")
bmpNeedle := Gdip_CreateBitmapFromFile("img/"img ".png")
RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,GXY,0,0,0,0,1,1)

Gdip_DisposeImage(bmpHaystack)
Gdip_DisposeImage(bmpNeedle)
Gdip_Shutdown(gdipToken)
StringSplit,gxy,GXY,`,
vx := gxy1
vy := gxy2
msgbox 찾았다 `n%gxy%`n%GXY%`n%gxy1%`n%gxy2%
return
}

Gtouch()
{
global ip,gxy
StringSplit,gxy,GXY,`,
msgbox `n%gxy%`n%gxy1%`n%gxy2%
RunWait, adb.exe shell input tap %gxy1% %gxy2%
}

  • theruin 2015.05.17 07:27

    여기서 실제 이미지 서치 부분은

    RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,GXY,0,0,0,0,1,1)

    이부분입니다. 찾으면 찾은 좌표값이 GXY에 들어가 있겠죠

    ; ++ RETURN VALUES ++

    ;

    ; -1001 ==> invalid haystack and/or needle bitmap pointer

    ; -1002 ==> invalid variation value

    ; -1003 ==> X1 and Y1 cannot be negative

    ; -1004 ==> unable to lock haystack bitmap bits

    ; -1005 ==> unable to lock needle bitmap bits

    ; any non-negative value ==> the number of instances found

    이미지서치 리턴값입니다.?


    if (RET)

    {return ture}?

    이부분이 찾았는지를 구분하는거 같군요. 이부분으로 클릭할지 메시지 출력할지 선택하면 되겠네요

  • 샤먼 2015.05.17 08:06
    아하 ! 그렇군요! 감사 합니다 !!

    이 스크립트만 가지고 계속 연구를 해봤는데
    if (RET)
    {return ture}
    를 넣고

    위쪽에
    F4::
    if (GSearch(1))
    {GTouch()}
    return
    이 구문으로 구문을 바꾸게 되면 GSearch에서 리턴값이 있는것이니 GTouch 를 실행을 하여야 되는데 실행이 안되서
    GSearch(1)
    if (vy)
    {GTouch()}
    return
    이렇게 바꾸면 또 실행이 되던데..
    뭔가 제가 잘못 이해하고 있는 부분이 있는것인가요? ㅠ
  • 우후훅 2015.05.17 08:36

    제가 썻던 부분은 재대로 테스트를 하지 않은부분이 있습니다. 똑같이 하시면 안될수있어요.

    저도 해보는데 의미를 둘뿐 다시 안보는 부분이라 틀린것도 안고치고 있습니다.

    imagesearch , vx,vy, ~~~

    if (errorlevel=0)

    이런식으로 하는데 , 저는 if(errorlevel=0) 이부분 타이핑을 줄이고자 return true 를 넣어서

    if(함수) 이런식으로 쓴겁니다.? 다른분들이 그렇게 쓰는분들이 계셔서 저도 간편해서 그리쓰고 있네요.

    별 의미는 없습니다. ㅎㅎ


    그리고 사견인데요. adb방식으로 이미지를 캡쳐하고 그걸 다시 pc로 복사하고 하는 과정이 제가 만들던 부분에는

    힘겹더라구요. 저같은경우 서칭을 0.1초정도마다 반복서칭을하게되는데, 이러면 이미지를 계속 복사를 반복하게됩니다.

    다시말해, hdd가 계속 쓰고지우고를 반복해서 로딩상태를 계속되죠.

    실질적으로 이런 부분들은 메모리에서 처리해야하는건데 문제점이 있어요.


  • 샤먼 2015.05.17 08:43
    imagesearch 명령어로는 errorlevel 별로 나누면 되던데
    gdip_imagesearch 에서는 errorlevel 구별없이 찾든 못찾든 errorlevel = 0 쪽의 스크립트들이 실행이 되더라구요

    혹시
    if (GSearch("1"))
    {Gtouch()}
    return
    이 스크립트가 정상 작동을 하셧나요?
    전 저렇게 넣으니 Gtouch() 부분으로 넘어가질 않아서.. ㅠ

    임시 방편으로 이렇게 하니 되긴하던데..
    GSearch("1")
    if (vy)
    {GTouch()}
  • 우후훅 2015.05.17 08:47

    안본지 좀 됏다고 벌써 가물가물하네요. 일단 되기는 잘됐었습니다. 실제 제가 썻던부분에서
    약간 삭제하고 수정해서 다시 테스트는 안한부분이 있네요..ㅠㅠ
    그냥 이렇게 된다 라고 부분만 썻던것도 같구요. 다시 봐야알거 같습니다.



    gsearch("1") 함수에서 , 나오는 값이 true값과 global gxy 좌표값을 찾는데요.

    f (GSearch("1"))

    {

    msgbox. % gxy? ;값 안떨어지나요?
    Gtouch()
    }


  • 샤먼 2015.05.17 17:03
    그렇게 실행을 하면 msgbox 가 아예 뜨지를 않더라구요.. ㅠ
  • theruin 2015.05.17 09:13

    gsearch 리턴값이 없습니다. 그러니 if문을 사용하여도 실행이 안되는게 당연하지 않나요?

    찾았는지 못찾았는지 확인하려면, gsearch에 리턴값에 ret를 주세요.

  • 샤먼 2015.05.17 17:20
    아직 입분 한지 얼마 되지않아

    gsearch에 리턴값에 ret를 주세요. 가 이해가 되지를 않네요.. 주륵..
  • 샤먼 2015.05.17 17:28
    아.. 만지가다 해결했습니다..
    msgbox 만세..

    if (RET)
    {return RET}
    이렇게 만들어 버리니 정상작동하네요 !

    도움 감사합니다 !
  • 우후훅 2015.05.17 18:13
    http://tailstar.net/index.php?mid=autohotkey&page=2&document_srl=7289211

    이글 보고 하신거 맞으시죠..
    본문의 첫질문에 return ture 가 무엇인지 질문하시길래 당연히 포함되어있는줄 알았네요.
    저 링크글에 가셔서 그대로 하시면 이미지 찾을경우 true값이 반환될거구요.
    global로 지정한 gxy값 역시 나올겁니다. 뭔가 빠트리셨나부네요...
  • 샤먼 2015.05.17 18:18
    저 상태로 따라하니 전 이상하게 안되더라구요 ㅠ

    Gsearch 함수 중에

    global ip,bmpHaystack,bmpNeedle,border,caption,vx,vy

    여기에서 gxy 를 글로발 함수로 불러오지 않더라도
    리턴값에서 gxy 로 리턴이 되게 되는건가요?
  • 우후훅 2015.05.17 18:25

    아... 그부분은 , 원래 disp_imagesearch를 해서 이미지를 찾을경우 이미지결과값인 vx,vy값을
    하나로 묶어서 찾아줍니다. 대략 200,300 이런식으로 하나의 변수에 묶어서요.
    이걸 gxy변수에 넣은거고 , 그걸 다시 분리해서 vx , vy값으로 global잡은거에요.
    그냥 gxy를 global잡고 밖에서 분리작업해도 되구요.. stringsplit로 분리하는 부분있어요.

  • 샤먼 2015.05.17 18:41
    링크 글을 처음에 따라했을때 문제에 봉착했던게
    중간 중간 msgbox 를 넣어서 분기점 마다 확인을 했는데
    분명 이미지를 찾아서
    if (RET)
    {return true} 까지는 잘 왔는데
    그 후에

    if (GSearch())
    {Gtouch()}
    여기 부분에서 Gtouch() 부분을 진행을 못하더라구요..
    그 때문에 꼬박 하루를 찾아 해멨었네요 ㅎㅎ

    adb 이용해서 하는건
    별되하는사람 님께서 올려주신
    http://tailstar.net/autohotkey_tips/2657024
    이쪽 글의 자료는 파일 남기지 않고 클립보드 상에서 이미지 서치가 되는듯한데

    저거는 아직 분석할 자신이 없어서 파일을 남겨서 하는 쪽으로 아직 공부 중이에요 !

    아직 베울것이 어마무시하게 많이 남았으니
    베우다 보면 뭔가 해결점이 보이지 않겠냐! 하는 무대뽀 정신으로 ㅎㅎ
  • 우후훅 2015.05.17 19:03

    으미 죄송해요.. 그당시 제가 이것저것 해보느라 재대로 체킹안하고 올렸네요.
    이것저것하느라 테스트해볼 여력이 마땅치 않은상태서 올리고 틀린부분이 있는지
    제가 묻기도 했었네요.. ㅎㅎ
    지금 다시보니 , gxy가 global로 지정이 안되어있네요.
    imgsearch에는 vx,vy로 내보내고 , gtouch에서는 gxy를 global잡고 있었네요..ㅡㅡ;;;
    제가 테스트한 실제 부분에는 재대로 수정해놨는데 본문은 미처..ㅠ;ㅠ;;
    헛고생하게 했네요 죄송합니다.
    말씀하신 부분이 맞구요.

    글고 return값을 줄때 , 결과값인 좌표를 리턴하셔도 되고, true,false로 리턴해도 관계없네요.
    대신, if문상에서 , if(imgsearch("이미지")) 이렇게 잡을경우
    1이상 결과값이 오면 무조건 찾은걸로 처리가 되요.
    return ture 해도 1값이 리턴되니 이미지찾은걸로 되고 , return gxy 해도 1이상 좌표값이니
    찾은걸로 되겠죠. 제가 요부분 확실치 않아서 테스트해봤네요.

    제가 굳이 저렇게 쓴건 타이핑수를 최대한 줄여서 좀더 빠르게 작업하려고 했는데
    그게 문제였네요.. ㅎ,, 제가 잘못써서 고생하신 부분 죄송하네요..ㅠㅠ


    마지막으로 , 전혀 어려울게 없는 부분입니다.

    제가 저 글을 썼을때는 , global과 함수 개념이 확실히 정립이 되지 않은때라 그 부분에 대한 문의를 하려고 올렸던점도 있었습니다. 지금도애매하긴하지만,,,, disp_imagesearch와 adb는 있는걸 가져다쓰기땜에 상당히 간단합니다.

  • 샤먼 2015.05.17 20:53
    아항 ! 그렇군요 ㅎㅎ

    아니에요 덕분에 저도 많은 공부 됬습니다 ! ㅎㅎ
    처음 시작 할때는 변수 처리가 복잡하게 느껴졌는데 지금은 그때 보다는 낫네요 ㅎㅎ

    앞으로도 잘 부탁드립니다 ㅎㅎ

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 비활성 매크로 중 창이동후 매크로 안먹힘. 14 마토깽 2015.05.21 0/0
질문 오토핫키로 cmd 명령을 실행시킬 수 있나요? 2 마토깽 2015.05.20 0/0
질문 디바이스 목록 질문 7 JgH 2015.05.20 0/0
질문 세나 매크로 질문드립니다. 5 스파크 2015.05.20 0/0
질문 Listbox관련 질문입니다 4 영웅거북 2015.05.20 0/0
질문 매크로(스크립트)하나로 어떻게 여러개의 지니모션을 ... 11 단백질 2015.05.20 0/0
질문 핸콕님 매크로 처럼 매크로 실행 하면서 다른 작업 하... 5 블래이드 2015.05.31 0/0
질문 파일,폴더 가상화에서 파일 실행이 안되요 6 home01 2015.05.20 0/0
질문 지금 오토핫키 홈페이지 무슨일 있는건가요? 5 home01 2015.05.19 0/0
질문 오토핫키 L,B버전 관련 글이 안보이네요 6 우후훅 2015.05.19 0/0
질문 비활성 공부중인데요. 10 마토깽 2015.05.21 0/0
질문 오토핫키 이런식으로 사용해도 문제가없을까요? 9 페르니코 2015.05.19 0/0
질문 오토 핫키 공부하려고 하는 입문 뉴비 입니다. 5 일기 2015.05.19 0/0
질문 구이 버튼 실행키 질문좀 드릴게요 5 민서s2아빠 2015.05.19 0/0
질문 adb로 스크린샷 가지고 오기 질문 !! 6 샤먼 2015.05.19 0/0
질문 드롭다운리스트와 g액션 v변수 그리고 마우스좌표 3 색갈의비밀 2015.05.17 0/0
질문 com함수 또질문드립니다 ㅠㅠ 2 제발등업좀2 2015.05.18 0/0
질문 adb와 gdip 를 사용한 매크로 만들기 질문 15 샤먼 2015.05.17 0/0
질문 이미지서치 질문 6 스디 2015.05.17 0/0
질문 오핫 체크박스와 드롭다운리스트에 대해 질문 드립니다... 2 9nami 2015.05.17 0/0
Board Pagination Prev 1 ... 166167168169170171172173174 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글