매크로

질문
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
분류 제목 글쓴이 최근변경 추천
자유 던파 광부매크로 구매합니다. 4 구하요요 2022.12.14 0/0
질문 뭐가 문제인지 봐주세요 2 유즈매핑 2022.12.14 0/0
질문 Iniwrite Invalid Option 해결할방법 없을까요?? 4 welchs 2022.12.14 0/0
자유 모바일게임 노가다 1PC 10Nox 제작의뢰드립니다. Perignon 2019.02.19 0/0
질문 크랙 하실줄아시는분 구합니다. 1 도신사 2019.02.26 0/0
질문 메이플스토리 룬, 거탐,비올레타 스크립트 구합니다. 메라기 2019.02.17 0/0
질문 녹스에 adb명령어 어떻게 보내나요? 1 요코 2019.02.22 0/0
질문 이미지서치후 일정필섹 이동후 비활성 클릭 질문 1 조슈아 2019.02.15 0/0
질문 메이플 자동사냥 구매합니다 1 뽀르뽀르 2019.02.17 0/0
질문 오핫으로 픽셀서치한다음에 찾은데로 마우스 가게하는... 1 Asers 2019.02.22 0/0
질문 메이플 거탐,룬 자동해제 구합니다 도깡 2019.02.14 0/0
질문 메이플 룬, 거탐, 비올 뽀르뽀르 2019.02.13 0/0
질문 디컴파일 해주실분구합니다 모든것을궁금해요 2019.02.13 0/0
질문 오토핫키로 간단한 매크로 만들고 싶은데 너무 어렵네... 백티 2019.02.12 0/0
질문 궁금한게있는대오토핫키로 던파광부구동가능한가여?? 2 slf 2020.07.22 0/0
질문 오토핫키 랜덤이동 질문입니다. 3 후앙앙2 2019.02.15 0/0
질문 푸쉬블렛이랑 비슷한 프로그램이 있나요? 1 지니블렉션 2019.02.27 0/0
자유 매이플스토리 경매장 매크로 있습니다. 3 도도나무 2019.03.20 0/0
질문 메이플 거탐, 비올레타 핵 우회 메라기 2019.02.09 0/0
자유 메이플스토리 매크로 맞춤제작해주실분 구합니다. 4 메라기 2019.02.10 0/0
Board Pagination Prev 1 ... 394041424344454647 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글