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


오늘은 제가 직접 제작한 EKMLib를 사용하는 방법에 대해 설명드리려고 합니다.


시작하기에 앞서, 기초강좌의 내용을 완벽하게 이해하지 못하신 분들은 반드시 기초강좌를 완벽하게 이해하시고 이 강좌를 보시기 바랍니다.


함수 강의 보러가기 -  https://youtu.be/wCM0iPlDMNI



EKMLib에는 아래의 기능들이 구현되어 있습니다.

윈도우의 핸들을 얻어오는 함수. 핸들은 비활성 함수들에 사용됩니다.

비활성 마우스 우클릭 함수. 

비활성 마우스 드래그 함수

비활성 이미지서치 및 클릭 함수. (최소화 상태에서는 동작하지 않습니다.)

윈도우를 숨김/원위치 시키는 함수.

실행중인 윈도우를 검색하는 함수. 

실행중인 윈도우의 이름을 받아오는 함수

윈도우의 자식윈도우를 받아오는 함수

등등.


오늘은 파란색으로 표시된 기능을 사용하는 함수에 대해서 설명드리겠습니다.


기초강좌 4강에서 ImageSearch와 Send를 사용해서 이미지를 찾고 클릭하는 스크립트를 만들어 봤습니다.


기초강좌 4강의 실습내용을 EKMLib를 사용한 비활성 클릭을 사용하도록 수정해보겠습니다.^^


PostMessage 에서는 특정 윈도우에 비활성클릭을 하기위해서는 윈도우 타이틀이 필요했었습니다. 


깊이 들어가보면 윈도우 타이틀이 바로 사용되는 것이 아니고 윈도우의 핸들(ID라고 생각하시면 됩니다.)을 받아오고 이 윈도우핸들을 PostMessage가 사용하게 되는 것입니다.


윈도우 핸들은 프로그램이 생성될 때 정해져서 종료될 때까지 같은 값을 가지기 때문에 EKMLib에서는 시간을 단축시키기 위해 핸들은 구하는 함수와 비활성 함수들을 따로 구현해 놓았습니다.


스크립트를 보면서 설명드리겠습니다.


기초강좌 4강의 스크립트 내용을 아래와 같이 수정하세요.



위쪽 빨간 박스로 표시된 부분이 윈도우 핸들을 받아요는 부분입니다.


윈도우 핸들을 받아오는 함수EKMLib_findHWND이며 사용 방법은 다음과 같습니다.


title := "윈도우 이름"

e := EKMLib_findHWND(title, _hWnd)


title 이라는 변수윈도우 이름을 저장하고 EKMLib_findHWND(title, _hWnd)의 형태로 실행시키면 _hWnd 변수에 윈도우 핸들이 저장되게 되는 것입니다.


변수 e 에는 함수실행결과가 저장되며 메세지박스 등으로 잘 동작하는지 확인하는 용도로 사용하시면 됩니다.


아래쪽 빨간박스로 표시된 부분은 ImageSearch로 이미지를 찾았을 때 Send를 사용해서 클릭하는 부분을 EKMLib를 사용해서 비활성으로 바꾼 것입니다.


비활성 클릭을 하는 함수EKMLib_click이며 사용방법은 다음과 같습니다.


EKMLib(x좌표, y좌표, _hWnd)


클릭할 x, y좌표와 함께 위에서 구한 윈도우 핸들이 저장되어있는 _hWnd 변수를 적어주시면 비활성 클릭을 수행합니다.





위 스크립트에서는 모니터 전체 영역에서 이미지를 찾았기 때문에 프로그램 내부에 적용되는 좌표를 계산해주는 부분이 추가되었으며, 계산된 내부좌표를 사용해서 EKMLib(내부좌표x, 내부좌표y, _hWnd) 와 같이 비활성 클릭을 구현한 것입니다.


만약 이미지서치를 통해 프로그램 윈도우 내부의 특정 좌표를 받아온다면 EKMLib(x좌표, y좌표, _hWnd) 만 사용하시면 됩니다.


EKMLib에 비활성 이미지서치 & 클릭 함수가 있기 때문에 특정 좌표값을 비활성으로 클릭하실때만 사용하게 될 것입니다.^^


다음은 비활성 드래그 입니다.


제가 붙혀넣기 강좌 10강에서 비활성 드래그 함수를 어떻게 구현하는지 알려드렸습니다. 


그냥 그대로 사용하셔도 되고 EKMLib에 구현된 드래그 함수를 사용하셔도 됩니다. 

(그냥 한줄로 사용하실 수 있게 옮겨놓은 것입니다.^^)


비활성 드래그 함수EKMLib_inactiveMouseDrag이며 사용방법은 다음과 같습니다.


EKMLib_inactiveMouseDrag(s_x, s_y, e_x, e_y, num, _hWnd)


사용되는 변수의 의미는 다음과 같습니다.


s_x - 드래그 시작 지점의 x 좌표

s_y - 드래그 시작 지점의 y 좌표

e_x - 드래그 끝 지점의 x좌표

e_y - 드래그 끝 지점의 y좌표

num - 드래그 횟수

_hWnd - EKMLib_findHWND로 얻어온 윈도우 핸들


각각의 변수에 맞는 값을 넣으시고 사용하시면 됩니다.


비활성 드래그의 경우 붙혀넣기 강좌 10강의 내용을 보시고 이해하시면 됩니다.



여기까지는 기존 강좌에 있는 내용들은 조금 더 간편하게 사용할 수 있는 정도인 것 같습니다.ㅋ


하지만 다음에 나오는 기능들은 강좌에는 없는 내용이니 기대하셔도 좋습니다.


그럼 EKMLib 비활성 매크로 라이브러리 첫번째 강좌를 마치겠습니다~^^

블로그 이미지

킴영감

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

댓글을 달아 주세요

  • 킴영감광팬 2017.12.21 17:35  댓글주소  수정/삭제  댓글쓰기

    EKMlib 유튜브영상이며 홈페이지며 킴영감님 덕분에 공부 많이하고있습니다.
    한가지 막히는문제가있네요
    EKMlib를 이용해서 비활성 이미지서치를 하는데
    {1번이미지서치
    {
    2번이미지서치}
    }
    {3번이미지서치
    }

    이런구문이면 1번이미지찾고 2번이 있으면 찾고 없으면 3번으로 넘어가야하는데
    msgbox 구문이 뜨는데 이건 안뜨게 할수없나요..??

  • 킴영감광팬 2017.12.21 18:57  댓글주소  수정/삭제  댓글쓰기

    아! 제가 구문을 잘못넣었어요 다시 재 확인하니까 됐습니다 답변감사드립니다~~

  • 질문합니다 2018.07.09 19:45  댓글주소  수정/삭제  댓글쓰기

    안녕하세요~ 기초강의 듣고 활성화 매크로 만들어서 잘 쓰고있는데,
    비활성화 매크로 만드려다가 이상생겨서 질문남깁니다.

    F3::
    MouseGetPos, qx, qy
    return

    button시작:
    {
    EKMLib_findHWND(winTitle_, _hWnd)
    loop, 1
    {
    EKMLib_keyInput(0x20, 0x390001, _hWnd) ;작동됨
    EKMLib_click(qx, qy, _hWnd) ;작동안됨 그자리 클릭만함
    }
    }
    return

    이렇게 대략적으로 만들었는데, 게임 내에서 저기 키인풋은 정상작동하는데
    마우스가 좌표이동이 안되고 그냥 클릭만 되네요
    좌표를 qx qy대신 직접 설정해도 작동하지 않아요!

    관리자모드로 해도 안되서 결국 여쭤봅니다!

    • 킴영감 2018.07.12 05:05 신고  댓글주소  수정/삭제

      PC게임인가요?
      PC게임의 경우 소프트웨어적인 입력을 막아놓은 경우가 있습니다.
      그럴경우에는 해답이 없으니 참고하셔서 프로그램을 만드시는게 좋을 것 같습니다.^^

    • 질문합니다 2018.07.12 10:12  댓글주소  수정/삭제

      error := EKMLib_inactiveImageSearch("image", "SS", x1, y1, x2, y2, _hWnd, 0.95) ;판매라인
      if(error = 0)
      {
      XQ:=x1+5|y1-5<<16
      PostMessage, 0x200, 0, %XQ%,, ahk_id %_hWnd%
      PostMessage, 0x201, 0, , , ahk_id %_hWnd%
      PostMessage, 0x202, 0, , , ahk_id %_hWnd%
      sleep,500
      }

      해결했씁니다 ㅎㅁㅎ 포스트메시지로 변환시키니 정상작동하더라구요! 며칠싸매다 결국 해냈어요!

    • 킴영감 2018.07.12 16:49 신고  댓글주소  수정/삭제

      축하드립니다~^^
      ClassNN을 사용해야 하는거면 제 유튜브채널에 있는 EKMLib 강의 3강을 보시면 비활성이미지서치와 비활성 입력이 가능할 것 같습니다~ (확답은 못드리지만요^^)
      비활성 입력이 된다면 도전해보시는 것도 좋을 것 같네요~

  • 마우스드래그가 안먹혀요ㅜㅜ 2018.07.16 01:14  댓글주소  수정/삭제  댓글쓰기

    EKMLib 감사히 잘 사용하고 있습니다.
    녹스플레이어에 비활성드래그를 사용하려 해보니 드래그가 입력한것처럼 움직이지 않고
    함수가 작동하는 동안의 진짜 마우스 움직임을 따라가는 겁니다. 납두면 그냥 클릭한 것처럼만 되구,
    postmassage도 0x200, 1 사용하면 진짜마우스 움직임 따라가더라구요...
    controlclick의 휠업으로 대체해도 될것 같은데 얘는 제가 사용법을 모르는 건지 안먹혀요 ㅜㅜㅜ

    해결방법 알 수 있을까요??