파이썬 비활성 클릭 - paisseon bihwalseong keullig

#Chapter.11 ,오토핫키 비활성 클릭(PostMessage)

시작합니다.

지금부터 배우실 오토핫키 명령어는 비활성 입니다. 시작하기 앞서 비활성에 대해서  간단하게 설명 드리겠습니다.

지금 제 포스팅을 보고 계시다면 활성화된 창은 인터넷 창입니다. 지금까지 배웠던 이미지서치나 Send 방식 클릭으로는 활성화된 창이외엔 서칭 혹은 클릭할 수 없었죠. 활성된 창에서만 작동하는 매크로는 비효율적입니다. 컴퓨터로 다른 작업을 하기 어렵기 때문이죠. 녹스창을 구석으로 옮겨 놓고 다른 한쪽구석에서 동영상 정도는 볼 수 있겠죠. 하지만 비활성 명령어에 익숙해지고 사용이 가능해지면 활성화된 창이 아니더라도 이미지를 찾고 클릭을 하고 동작할 수 있게됩니다. 

이전 챕터에서 만들었던 매크로를 실행해 보셨다면 아시겠지만 마우스가 이리저리 움직이죠

매크로 동작에 방해가 될만큼 마우스이동을 계속해서 하고 있으면 매크로도 동작이 안되곤 합니다.

그래서 비활성으로 만들어서 좀더 완벽한 매크로로 만들어 보겠습니다.

#주의 비활성이 '최소화'를 말하는 것은 아닙니다. 최소화가 아닌 예를들어 지금 보고계시는 인터넷창 뒤에 녹스플레이어가 작동 되고 있다면 매크로가 동작한다는 의미입니다. 또한, 전체화면 모드가 실행되면 동장이 안되는 것 같습니다. 다른걸로 확인을 해보진 않았는데 녹스를 켜놓고 전체화면 게임을 하면 이미지서칭을 하지 못하더군요.

그럼 비활성 클릭 PostMessage부터 시작하겠습니다. 다른 명령어도 존재합니다만 제가 사용해본결과 저랑은 이게 잘 맞더군요.

일단 목적은 녹스 플레이어를 통한 테라M 매크로 만들기 입니다. 녹스창을 켜주시고 테라 아이콘의 좌표를 Active Window Info (Window Spy)을 이용해서 찾아보겠습니다.

녹스플레이를 한번 클릭해주면 활성화가 되죠 그상태에서 테라M에 마우스를 올리시면 Active Window Info (Window Spy)의 Mouse Position: 에서 Relative 값을 확인해주시면 됩니다.

제가 구한 값은 x519, y249 입니다. 

그럼 스크립트 보시겠습니다.

gui,show,w100 h200 center,chapter11

gui,Add,Button,x0 y0 w100 h50 gStart,Start

gui,Add,Button,x0 y50 w100 h50 gStop,Stop

return

#이정도 gui는 계속 보여 드렸던 어렵지 않은 gui이니 설명안드리겠습니다.

Start:

CLickX:=519

#Active Window Info (Window Spy)로 찾은 x값입니다.

ClickY:=249

#Active Window Info (Window Spy)로 찾은 y값입니다.

lparam:=CLickX|ClickY<<16

#ClickX  | ClickY << 16 은 PostMessage는 좌표값을 16진수로 받습니다. 좌표값을 16진주로 바꾼다 로 생각하시면 됩니다. ' | '는 Shift+\ 키입니다. '역슬래시' 라고 합니다.

PostMessage,0x201,1,%lparam%,,녹스 플레이어

#PostMessage 는 실행 명령어(마우스 클릭은 0x201),wparam(클릭은 그냥 1이다 생각하세요.),lparam(좌표값을 16진수 화한것),(여기는 실행칸? 정도로 생각하시면되는데 녹스는 없습니다. 비우시면 됩니다.),실행 창 이름(녹스 플레이어)

PostMessage,0x202,0,%lparam%,,녹스 플레이어

#위와 마찬가지로 마우스를 클릭을 땝니다.(0x202),0,

Sleep, 1000

return

Stop:

ExitApp

return

GuiClose:

ExitApp

return

파이썬 비활성 클릭 - paisseon bihwalseong keullig
Chapter_11.txt

#파일 올려드립니다.

보시면 이전에 배웠던 Send 방식 Click 과는 다르게 해당좌표를 가려도 클릭이 가능합니다. 

실행하실때 더큰 인터넷 창이나 다른 창으로 가리고 해보세요.

다음시간엔 gdip, gdip_imagesearch 를 활용한 비활성 이미지서치를 알아보겠습니다. 

ngmsoftware.com/bbs/board.php?bo_table=study&wr_id=246

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

파이썬 비활성 클릭 - paisseon bihwalseong keullig

안녕하세요. 엔지엠소프트웨어입니다. 새해가 밝았네요^^; 그동안, 보안이나 우회 관련 의뢰로 끝이 보이지 않는 일을 해왔습니다. 해외에서 프로그램도 공수해오고, 여러 커뮤니티도 들락날락하면서 테스트하고 검증하면서 힘든 1년을 보냈네요. 그러나~ 능력 부족으로 모두가 만족할만한 성과를 낼수는 없었습니다ㅠㅠ; 새해에는 여러가지 업무와 기능들을 포기한 대신 많은 시간과 여유를 얻을 수 있었습니다. 그래서, 새로운 사업 모델인 아이템 거래 솔루션을 만들기 위해 파이썬을 공부 중입니다. 일단, 그동안 쌓아온 노하우가 매크로에 있으므로 파이썬 매크로 만들기를 진행하면서 학습도 병행해야 할거 같아요^^

파이썬 비활성 클릭 - paisseon bihwalseong keullig

이전 글에서 파이썬으로 마우스를 제어하는 방법에 대해 간단하게 알아봤습니다. 오늘은 모니터 화면에서 원하는 이미지를 찾아 클릭하는 방법에 대해 알아볼께요. 이미 한번 해봤던 내용이라 크게 어렵지는 않겠지만, 그래도 이전 내용들을 미리 학습해보는게 좋겠습니다. 파이썬 개발 환경을 갖춰야 이 내용도 따라할 수 있기 때문이죠^^; 최대한 복잡한 설명은 배제하고, 동작할 수 있는 요점만 설명하면서 진행하도록 하겠습니다.

[ 파이썬 매크로 만들기 - 1부, 2부, 3부 ]

이미지 서치(엔지엠에서는 이미지 매치)와 마우스 클릭을 위한 패키지들을 설치 해줍니다. pyautogui는 파이썬 스크립트가 마우스와 키보드를 제어하여 다른 프로그램과 상호 작용할 수 있게 해줍니다. 장점은~ Windows, MacOS, Linux에서 작동한다는 점입니다. 리눅스는 GUI를 지원하는 버전에서만 되겠죠^^;

pip install pyautogui

이미지 서치에는 OpenCV가 필요합니다. 아래와 같이 패키지를 설치 해주세요.

pip install opencv-python

마지막으로~ 파이썬에서 이미지를 처리해주는 필로우를 설치하세요.

pip install pillow

파이썬은 스크립트 언어입니다. 보통 많이 알고 있는 자바스크립트와 같은 스크립트 언어들은 한줄씩 인터프리터가 해석하면서 실행됩니다. 그렇다보니 이미지를 바이트로 처리하는데 문제가 있습니다. 이런 문제를 해결해주는 패키지가 필로우입니다. 스크립트 언어들은 컴파일 언어에 비해 속도가 느릴수밖에 없습니다. 이제 찾을 이미지를 만들어야겠죠? 찾고자 하는 이미지를 source라고 명명하고, 소스 이미지를 찾을 전체 화면을 target이라고 부르겠습니다. 엔지엠 에디터를 실행한 후 아래와 같이 소스 이미지를 바탕화면에 저장합니다.

※ 파일명을 source.png 로 변경하세요.

파이썬 비활성 클릭 - paisseon bihwalseong keullig