매크로

질문
2019.02.20 05:25

뭐가 문제인지 봐주세요

조회 수 356 추천 0 댓글 2

기존에 라이브러리 받아서 사용중이었는데 유료화 된다고 해서 GDIP 를 이용한 비활성이미지서치 걸음마 중입니다

혼자 맨땅에 헤딩 5일째인데 너무 답답해서 글을 쓰게 되었습니다

비활성 이미지 서치 관련 구글링해서 나오는 글은 거의 다 읽은것 같구요

구동환경은 윈10 64비트이고 오토핫키는 32비트

라이브러리는 Gdip 이랑 Gdip_ImageSearch 그리고 사용할 함수추가 한 라이브러리 이렇게 있습니다


이미지 서치 관련 얻을 수 있는 스크립트 중에 search_img(image,hwnd, byref vx, byref vy) 이게 잘 작동하는거 같아서 선택했습니다

플레이어는 모모 블루스택 녹스 다 테스트해보았고 결과는

모모에서 이미지서치 일부작동 포스트메세지 작동OK

블루스택 이미지서치 작동OK 포스트메세지 작동X

녹스 이미지서치 작동X 포스트메세지 작동X

였습니다


윈도우스파이에서 나오는 값을 각각 입력했기 때문에 값을 잘못 입력한 것 같지는 않고

또 일부 플레이어에서 작동하는걸로 보아 함수가 잘못된 것 같지도 않습니다

가장 이해가 안되는건 모모에서 일부작동한다는 것인데요

모모플레이어에서 사진첨부에 동그라미 친 곳에서만 인식을 합니다 저 범위를 벗어나면 인식을 못하네요

Hwnd 값을 잘못받아오는거 아닌가 싶은데 확인하는법을 몰라서 뭐가 문제인지 파악을 못하고 있습니다

뭘 체크해야 할지 조언 해주시면 열심히 찾아보겠습니다




그리고 중요한건 아닌데 아래 세개 다 같은말 아닌가요;;

젤 아래있는것만 작동을 하네요

물론 테스트할땐 작동하는걸로 확인했는데 함수호출이 안되는거 같아요

왜이러는지 모르겠습니다



PostClick(xx,yy)
{
    PostMessage, 0x201, 1, xx|yy-37<<16, TheRender, momo
    sleep, 100
    PostMessage, 0x202, 0, xx|yy-37<<16, TheRender, momo
}


click(clickx, clicky)
{
    aa := clickx
    bb := clicky - 36
    N := aa|bb<<16
    PostMessage, 0x201, 1, %N%,TheRender, momo
    PostMessage, 0x202, 0, %N%,TheRender, momo

}


xx :=

yy :=

PostMessage, 0x201, 1, xx|yy-37<<16, TheRender, momo
sleep, 100
PostMessage, 0x202, 0, xx|yy-37<<16, TheRender, momo



하루 이틀 지날 땐 더 파다보면 뭔가 나오겠지 싶었는데

5일째가 되니까 피가 마르는거 같아요 ㄷㄷㄷ


  • Hangoon 2019.02.21 10:39

    블루스택은 제가 다룬지가 좀 되어서 가물가물한데

    녹스는 ClassNN 빼고 하시면 클릭이 됩니다.


    y좌표에서 어떤거는 36을 빼고 어떤거는 37을 빼는데 

    아마 타이틀바 부분 높이를 빼는것이겠지요?

    모모의 경우는 메시지를 전달하는 타겟이 모모창 전체가 기준이 아니라 RenderWindow1 이라는 Class가 되고요

    여기는 타이틀바나 프레임이 포함이 안되어있습니다. 따라서 -36, 37등 좌표 보정이 필요가 없습니다


    반면 녹스는 특정 클래스에 메시지를 전달하는것이 아닌 녹스창에 메시지를 전달하다보니 프레임두께와 타이틀바 부분의 높이를 고려해서 좌표 보정을 해줘야 원하는 좌표에 클릭을 할 수 있습니다.


    많이들 쓰시는 Gdip.ahk라이브러리에서는 이미지를 따오는 방법을 2가지 제공합니다. PrintWindow와 BitBlt인데요

    윈도우10 기준으로 설명드리자면 BitBlt함수를 이용하면 녹스든 모모든 캡쳐가 가능할겁니다. (확인은 필요하네요)

    PrintWindow를 사용하신다면 세번째 인자인 flags 파라메터로 2를 전달하면 녹스의 그래픽모드에 구애받지 않고 역시 캡쳐가 가능합니다.. 모모는 모르겠군요 (이 역시 확인은 필요합니다;)


    BitBlt함수를 사용해서 캡쳐를 하시려면 

    Gdip_BitmapFromScreen 함수를 이용하면 됩니다. 원래는 스크린상에 보이는 이미지를 범위를 지정해 캡쳐하는 함수이긴 한데 첫번째 인자로 "hwnd:" 문자열 뒤에 hwnd값을 넣으시면 해당 창만 캡쳐를 합니다. 가려져 있어도 되구요.


    PrintWindow를 이용하는 캡쳐는 널리 쓰시는 Gdip_BitmapFromHwnd함수입니다.


    함수를 한번 들여다보시면 어떻게 써야할지 감이 오실겁니다.


    일단 사진 첨부가 안되어있는데

    내가 캡쳐한 화면이 어떤식으로 들어오는지 savebitmaptofile 함수를 통해서 한번 확인해보세요

  • 유즈매핑 2019.02.27 19:20
    먼저 친절하고 자세한 답변 감사합니다
    타이틀바 높이는 실제 찍히는 위치보고 없애거나 만들거나 조정하면 되는 부분이라 문제가 되진 않습니다
    이상하게 클래스창 이름을 TheRender 이나 RenderWindow1 둘중 아무거나 해줘도 먹히더군요
    안그래도 제가 답변확인하기 전에 Gdip 파일 교체하는 방법으로 가장 큰 문제는 해결이 되었었고
    불러오는 라이브러리 안을 뒤져보고 있었는데 말씀해주신 PrintWindow와 BitBlt 는 제가 문제 해결을 하는데 큰 도움이 될 것 같습니다 말씀해주신 부분이 다 이해되진 않았지만 메모해두고 잘 참고하겠습니다
    다시 한번 감사드립니다

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 postmessage명령어와 이미지서치 명령어 사용에 관해 ... 3 앙꼬호빵 2014.09.28 0/0
질문 Genymotion에서 PostMessage를 이용하기 에러 질문 6 무림공작 2015.09.07 0/0
질문 오토핫키 스마트 구이 Edit 적은시간 적용하기 7 품격의상징 2014.09.30 0/0
질문 매크로 만드시는분들 이미지 서치 위주로 하시나요? 5 너울 2014.11.11 0/0
자유 이미지 서치 관련 베이스(?) 스크립트는 어디서 참조하... 5 oxydhd 2014.10.16 1/0
질문 1004매크로 다운받는곳좀 ,, 6 앙탈소녀 2014.10.14 0/0
질문 andy에뮬에서 오토핫키를 이용한 이미지서치시에 마우... 2 하나비 2014.10.04 0/0
정보 지니모션 postmessage 미작동 관련 3 무사시무 2014.10.11 0/0
자유 몬스터 길들이기 모험 매크로를 만들어보았습니다. 4 페르니코 2014.10.14 0/0
정보 쿠키런 매크로(ImageSearch활용) 입니다. 10 멕아리 2015.02.09 1/0
자유 몬길 무한실행반복 쓰던건데... 4 오라컴퓨터 2015.09.07 0/0
질문 질문 드립니다. 고수분 답변 부탁 드려요 3 빈대왕 2014.10.10 0/0
질문 비활성공부하려면.. 4 은가람 2018.12.17 0/0
질문 오토핫키로 엘가드 메크로 가능한가요?? 2 미쓰광 2014.10.16 0/0
자유 오토핫키좀 배워보려는데 2 포테토스틱 2015.05.04 0/0
자유 쿠키런 비활성화 매크로 8 mauver 2015.03.25 3/0
정보 오토핫키 이미지 서치 테스트용 1 너울 2015.05.04 0/0
질문 숨어야 산다님 부탁드립니다. ㅜㅜ 5 vl타민 2014.10.17 0/0
질문 이미지서치 관련 문의 3 핸콕 2014.10.18 0/0
자유 첫 걸음마 중인데.. 5 나은 2015.05.04 0/0
Board Pagination Prev 1 2345678910 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글