매크로

질문
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
분류 제목 글쓴이 최근변경 추천
자유 반갑습니다 오늘도 좋은하루되세요 2 통통배다잉 2023.04.12 0/0
질문 이미지서치후 해당좌표까지이동할때쓰는 함수뭐가있을... 2 감사합니당ㅋㅋ 2023.04.09 0/0
자유 오토핫키 로스트시티 작동잘되나요 ? 최진 2023.04.05 0/0
질문 오토핫키 v2 이미지서치 도움 좀 주실분!! 2 비비아랑 2023.11.05 0/0
질문 오토핫키 v2 버전 비활성 이미지서치 1 레몬유령 2023.04.01 0/0
공유 AHK로 텍스트 타이핑 vim처럼 어디서든 사용하거나 마... 엘런튜링 2023.03.30 0/0
질문 랜덤 중복 우회 방법 1 반디친구 2023.03.27 0/0
질문 PC 바람의나라 오토핫키 우회법 문의 3 레인슈터 2023.06.20 0/0
질문 오토핫키v2 정식버전이 된거 같습니다. 톨톨이 2023.03.25 0/0
공유 디컴방지 컴파일러 정식버전 v1.01 digim0 2023.03.31 0/0
질문 이미지 서치 중 변수 %A_index% 관련 문의 1 후룰루롤로 2023.03.22 0/0
질문 이미지 서치 7 후룰루롤로 2023.03.23 0/0
질문 비활성 이미지서치 1 후룰루롤로 2023.03.22 0/0
공유 와이로 컴파일러 디컴파일 도구 (3/16 수정) 6 wejkqv 2023.03.27 0/0
공유 디컴방지 컴파일러 v3 digim0 2023.03.14 0/0
공유 와이로 컴파일러 디컴파일 도구 wejkqv 2023.03.07 0/0
질문 LD플레이어에서 오토핫키 시작키 안됨 1 후룰루롤로 2023.11.05 0/0
질문 쉽게 보고 시작했는데 잘 안되네요.(수정) 2 슬픈휘파람 2023.03.05 0/0
자유 Class_FTP.ahk 뒷산아저씨 2023.02.23 0/0
공유 오토핫키 디컴방지 컴파일러 4 digim0 2023.03.09 1/0
Board Pagination Prev 1 2345678910 ... 208 Next
/ 208

전체 최신 인기글

전체 주간 인기글