원본 글 보기
http://ngmsoftware.com/bbs/board.php?bo_table=study&wr_id=575
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
기계식 매크로 만들기, 아두이노 매크로, 디디 매크로, 인터셉션 매크로, DD, Interception, Arduino, 지존오토, 한글 인식, 표적 인식, 화면 인식, 매크로 커뮤니티, 매크로 강좌, 무료 매크로 다운로드 http://ngmsoftware.com
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
안녕하세요. 엔지엠소프트웨어입니다. 살다보면 단순 반복적인 작업을 해야 하는 경우가 생각보다 많이 발생합니다. 취미로 즐기는 게임이나 회사 업무등등... 여러가지 상황이 발생하죠. 네이버 카페나 나이키, 명품, 프라모델등등... 한정판 혹은 선착순 같은 상황에서 선택받지 못하는 경우도 많습니다. 저도 이벤트 시간에 대기하고 있다가 클릭이 늦어서 원하는 리미티드 에디션 상품을 구매하지 못한 경우가 있습니다. 골프나 야구 또는 콘서트, 뮤지컬등등... 마찬가지인 경우들이 많죠^^; 비개발자도 메크로를 직접 제작해서 사용할 수 있도록 최대한 쉽고 자세하게 메크로 제작기를 작성해보려고 합니다.
파이썬 메크로 만들기
우선, 개발 환경을 만들어야 합니다. 아래 사이트에서 VSCode(Visual Studio Code)를 다운로드 합시다.
[ 비주얼 스튜디오 코드 다운로드 ]
VSCode는 설치하는데 복잡한 설정이나 변경해야 할 부분은 없습니다. 서버 설치나 데이타베이스와 같이 시스템에 영향을 주거나 사용자 계정 및 권한 관리등등 선택하는게 없기 때문입니다. C드라이브에 용량이 없다면 설치 위치정도 변경할 수 있겠네요. 하지만, 가능하면 기본값으로 설치하세요. 설치가 완료되면 비주얼 스튜디오 코드를 실행해줍니다. 아래와 같은 화면을 볼 수 있습니다.
※ 워크 스페이스나 환경에 따라 다를 수 있지만, 대부분은 아래와 비슷한 화면이 열릴겁니다.
우리는 한글이 익숙하므로 한글로 변경해줍시다.
- 확장 클릭. (Extensions, Ctrl+Shift+X)
- korean 입력
- Korean Language Pack for Visual Studio Code - Install 클릭
설치가 완료되면 ①Restart를 클릭하세요.
아래 그림과 같이 한글로 변경되었죠? 영어로만 보다가 한글로 보니깐 왠지 생소하네요 ㅎㅎ;
이제 파이썬을 설치 해볼까요? Extensions(Ctrl+Shift+X)를 눌러서 python을 검색합니다. 저는 이미 설치되어 있는데요. 여러분들은 아래 3가지를 모두 설치해야 합니다.
프로그래밍 언어를 처음 시작할 때 항상 하는게 있는데요. 바로~ "Hello NGMsoftware!"입니다. 개발자들이 이런걸 항상 하는 이유는 간단합니다. 개발 환경이 잘 갖춰지고 정상적으로 동작하는지 확인하기 위함이죠. 그리고, 언어를 가르치는 대부분의 전문 서적이나 사이트에서 저렇게 하기 때문에 의례 하는것 정도로 이해하시면 됩니다. 그렇게 큰 의미를 가진건 아닙니다. 아래 그림과 같이 좌측 상단 메뉴에서 파일 > 새 파일을 클릭하세요.
새로운 파일이 만들어졌습니다. 이상태에서 Ctrl+S를 눌러서 저장할 수 있는데요. VSCode는 대부분의 언어를 개발할 있도록 만들어진 IDE이기 때문에 단순히 파일만 만들어서는 어떤걸 할지 알 수 없는 상태가 됩니다. 그래서, 파일을 저장하면서 확장자를 지정하거나 아래 그림처럼 "언어 선택"을 통해 명시적으로 Visual Studio Code에게 알려줘야 합니다. "언어 선택"을 클릭해보세요.
※ 파일을 py 확장자로 저장하면 자동으로 파이썬으로 인식합니다. 파이썬 확장이 없으면 알려줍니다.
python을 입력하고, 검색된 항목을 클릭해줍니다.
아래와 같이 코딩을 추가하고, Ctrl+S를 눌러서 "start.py"로 저장합니다. 프린트 함수는 인자로 텍스트를 받고, 실행하면 텍스트를 출력해주는 기능을 합니다. 이제 막 시작 단계라서 함수와 인자에 대한 설명은 건너뛰고 동작이 되는지만 확인하시면 됩니다. 그리고, 처음에는 어쩔 수 없이 무조건 외우는 수밖에 없습니다.
※ 컴파일(실행)하면 자동으로 저장됩니다. 하지만, 가능하면 저장하는 습관을 들이는게 좋습니다.
print("Hello NGMsoftware!")
혹시라도 F5로 실행이 되지 않는다면, 우측 하단에 표시되는 알람 "Select Interpriter"를 클릭하고 설치되어 있는 파이썬을 선택하세요.
※ 설치된 확장의 종류에 따라 실행 단축키가 다른 기능에 연결되어 있을수도 있습니다.
파이썬을 실행할 단축키를 설정하고 갑시다. 영문 버전이면 "File > Preferences > Keyboard Shortcuts"로 이동하면 됩니다. 한글 버전은 아래와 같이 이동하세요.
저는 주로 빌드 또는 컴파일 또는 실행을 F5로 사용합니다. 자신의 취향에 맞게 설정하면 됩니다. 바로 가기 키에서 "Type to search in keybindings"에 "run python file in terminal"을 입력하세요. 검색에서 나온 항목에서 좌측에 + 버튼을 클릭합니다.
F5를 누르고 엔터를 치면 입력됩니다. 만약, 중복이 있거나 자신이 원하는 조합키가 있다면 그걸 넣어도 상관 없습니다.
아래와 같이 키 바인딩이 설정되었습니다.
start.py 파일을 선택하고, F5를 눌러보세요. 하단에 출력 결과를 확인할 수 있습니다.
이렇게해서 윈도우즈 10에서 파이썬을 개발하기 위한 환경 구성을 완료했습니다. 생각보다 쉽고 간단하죠? 그림만 보고 잘 따라했으면 아마 여러분들도 동일한 결과를 확인 했을겁니다. 이제 터미널에서 pyautogui를 설치해줍니다. 아래 명령을 수행해도 설치가 안된다면 [ 여기 ]를 참고해보세요.
pip install pyautogui
아래 코드를 Start.py에 코딩하고, F5를 눌러서 실행 해보세요.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 마우스를 현재 위치에서 X 방향으로 200, Y 방향으로 200 이동합니다.
pyautogui.move(200, 200)
마우스가 움직이는걸 확인하셨나요? 마우스가 순간 이동하기 때문에 좀 천천히 이동하도록 변경한 후 다시 실행 해볼께요.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 마우스를 현재 위치에서 X 방향으로 200, Y 방향으로 200 이동합니다.
# 마지막 인자인 듀레이션 3을 넣으면 좌표로 3초동안 이동합니다.
pyautogui.move(200, 200, 3)
pyautogui의 move는 현재 위치에서 설정한 X, Y 좌표로 마우스가 이동합니다. 마지막 인자인 Duration(듀레이션)은 마우스의 이동 시간을 나타냅니다. 간단한거지만, 대각선이 아닌 상하로 이동하려면 어떻게 해야 할까요? X값은 0으로 두고 실행해보세요.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 마우스를 현재 위치에서 Y 방향으로 200 이동합니다.
# 마지막 인자인 듀레이션 3을 넣으면 좌표로 3초동안 이동합니다.
pyautogui.move(0, 200, 3)
간단하죠? pyautogui의 move는 현재 마우스 좌표에 대해 상대적입니다. 상대적인 좌표 이동은 현재 위치에 영향을 받으므로 원하는 위치로 이동하려면 현재의 마우스 위치를 알아내야 합니다. 그래야 목표 지점으로 가기 위한 절대 좌표를 알 수 있으니까요. 그러면 현재 마우스의 위치는 어떻게 알 수 있을까요?
음~ 개발자가 아니라면 위 코드는 좀 어려울 수 있습니다. 주석을 친절(?)하게 달아두긴 했지만, 일반인이 보기에는 이해하기 어려울겁니다. 아무튼, 실행해보면 어떻게 돌아가는지 확인할수 있는데요. 코드에 적혀 있는 주석과 실제 동작을 비교해보면 어느정도 이해할 수 있을거라고 생각합니다. 만약, 실행이 되지 않는다면 아래 명령을 통해 win32api를 설치 해주세요.
pip install win32api
win32api보다 쉽게 후킹할 수 있는 pyHook도 있습니다. pyHook는 윈도우에 설치해야 하므로, 간단하게 win32api를 사용했습니다. 나중에 pyHook를 사용해서 윈도우를 후킹해서 메시지를 조작하는 방법도 알아보도록 할께요. 이번에는 간단하게 마우스를 어떻게 제어하는지에만 집중해서 진행하도록 하겠습니다. F5를 눌러서 실행 해보세요. 그리고, 목표 위치에서 클릭하면 좌표를 확인할 수 있습니다. 아래 동영상에서는 내문서(소심비형)를 클릭하고, 좌표를 확인하고 있습니다.
마지막에 찍힌 좌표가 X 39, Y 23입니다. 이 위치가 바탕화면의 내문서 폴더 위치입니다. 여기를 클릭해볼까요?
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 내문서를 클릭합니다.
pyautogui.moveTo(39, 23, 3)
pyautogui.click()
더블 클릭으로 내문서 폴더를 열어봅시다. 코드가 없더라도 여러분들은 이제 직접 할 수 있을겁니다^^;
이쯤에서~ 마우스 오른쪽 클릭은 어떻게 해야 할까 궁금할겁니다. 아래 코드를 붙여넣기 하고, 실행 해보세요.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 내문서로 마우스를 이동합니다.
pyautogui.moveTo(39, 23, 3)
# 마우스 오른쪽을 클릭합니다.
pyautogui.click(button='right')
너무 빠르게 컨텍스트 메뉴가 표시되었다가 사라지네요. 그래도 확인은 되었을거라 생각합니다. 마우스 가운데 버튼(보통은 휠이 여기에 있습니다.)을 클릭하려면 right 대신 middle을 입력하면 됩니다. 코드를 좀 더 간단하게 변경 해볼까요? 아래와같이 클릭에 대한 인자를 직접 설정해도 동일한 결과를 얻을 수 있습니다.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 내문서를 마우스 오른쪽 클릭합니다.
pyautogui.click(x=39, y=23, duration=3, button='right')
여러분들도 응용하기 위해서는 syntax(구문, 신택스)를 알아야 합니다. 아래와 같이 해당 함수를 클릭하고 F12를 눌러보세요.
아마도~ 함수의 정의로 이동되었을겁니다. 내용을 보면 자세하게 설명되어 있고, 어떻게 사용해야 하는지 알려줍니다. IDE에 따라 단축키는 다르지만, 비주얼 스튜디오(Visual Studio) 계열은 F12로 함수 또는 클래스의 정의로 이동할 수 있습니다. 신택스를 볼 수 있으면 개발은 거의 끝났다고 보시면 됩니다. 함수 사용법을 알아냈으니 머리속에 생각한대로 코딩만 하면 되니까요^^ 마지막으로 드래그하는 방법을 알아보죠~ 아래 코드는 내문서 폴더를 가장 마지막으로 이동시킵니다.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 마우스를 내문서 위치로 이동합니다.
pyautogui.moveTo(39, 23)
# 왼쪽 누른 후 좌표로 듀레이션만큼 이동합니다.
pyautogui.dragTo(39, 500, 3)
생각보다 쉽죠^^? 여러분들은 이제 마우스 기능을 거의 마스터 했습니다. 아직 알아보지 않은 한가지가 남았는데요. 그건 바로~!!! 스크롤입니다. 스크롤바가 있는 클라이언트가 있으면 쉽게 테스트가 가능한데요. 현재 윈도우 바탕화면에서 스크롤할만한 프로그램이 없습니다. 그래서 건너뛰고 마무리하려는거죠. 이 부분은 직접 scroll 함수의 신택스를 확인해보고 테스트 해보시기 바랍니다. 아마~ 이 글을 읽으시는 분들 모두가 쉽게 성공할거라 생각합니다. 그렇게 어렵지는 않으니까요. 게임 매크로나 업무용 자동화 매크로 또는 주식을 자동으로 매매하려는 분들은 이미지 서치와 마우스 클릭만으로도 충분히 반자동 매크로를 만들 수 있을겁니다. 완전 자동화를 하려면 이미지 서치뿐만 아니라 키보드와 OCR(광학 문자 인식, Optical Character Recognition)이 필요합니다. 이외에도 다크넷의 욜로나 예외 상황에 대처할 수 있는 추가적인 응용 능력도 갖춰야 합니다. 대부분은 엔지엠 에디터를 사용하면 프로그래밍을 몰라도 완전한 무인 자동화를 만들 수 있습니다.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 메모장을 클릭합니다.
pyautogui.click(150, 100)
# 메모장에 텍스트를 입력합니다.
pyautogui.write("Hello~ NGMsoftware!")
비활성 모드로 텍스트를 입력하는건 아니라서 메모장을 한번 클릭해줘야 합니다. 해당 창이 활성화되어야 키보드 입력이 들어가니까요~ 좀 더 천천히 텍스트를 입력하려면 어떻게 해야 할까요? 아래와 같이 인터벌(Interval, 간격: 시간적인)을 설정하면 됩니다. 엔지엠 에디터는 랜덤하게 타이핑하듯이 작성할 수 있지만 파이썬은 약간 제약이 있네요. 물론, down, up으로 char를 넘겨서 처리하면 가능합니다^^;
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 메모장을 클릭합니다.
pyautogui.click(300, 100)
# 메모장에 텍스트를 입력합니다.
pyautogui.write("\nHello~ NGMsoftware!", interval=0.3)
조합키를 입력하려면 어떻게 해야 할까요? Ctrl+A, Ctrl+C, Ctrl+V와 같은 키들을 말합니다. 이외에도 조합키는 많지만, 예제로 사용하기에는 가장 좋은 단축키들입니다. 메모장에 있는 내용들을 전체 선택하고, 복사한 후 다른 메모장에 붙여넣기 하는 방법입니다. 아래 코드를 붙여넣기하고 실행(F5) 해보세요.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 메모장을 클릭합니다.
pyautogui.click(300, 100)
# 메모장에서 전체 선택합니다.
pyautogui.keyDown("ctrl")
pyautogui.keyDown("a")
pyautogui.keyUp("a")
pyautogui.keyUp("ctrl")
# 메모장에서 선택 영역을 복사합니다.
pyautogui.keyDown("ctrl")
pyautogui.keyDown("c")
pyautogui.keyUp("c")
pyautogui.keyUp("ctrl")
# 붙여넣기 할 메모장을 클릭합니다.
pyautogui.click(300, 600)
# 클립보드 내용을 메모장에 붙여넣기 합니다.
pyautogui.keyDown("ctrl")
pyautogui.keyDown("v")
pyautogui.keyUp("v")
pyautogui.keyUp("ctrl")
보통은 이렇게 사용하지 않고 있습니다. 좀 더 편하게 사용할 수 있는 핫키 함수가 있는데요. 아래와 같이 코드를 변경하고 다시 실행 해보세요.
# pyautogui 모듈을 가져옵니다.
import pyautogui
# 메모장을 클릭합니다.
pyautogui.click(300, 100)
# 메모장에서 전체 선택합니다.
pyautogui.hotkey("ctrl", "a")
# 메모장에서 선택 영역을 복사합니다.
pyautogui.hotkey("ctrl", "c")
# 붙여넣기 할 메모장을 클릭합니다.
pyautogui.click(300, 600)
# 클립보드 내용을 메모장에 붙여넣기 합니다.
pyautogui.hotkey("ctrl", "v")
코드량을 많이 줄었는데요. 동작은 동일합니다^^; 마지막으로 알아볼 함수는 press입니다. spy++을 이용해서 윈도우 메시지를 확인 해보면 키보드는 keyDown, keyPress, keyUp으로 동작하는걸 알 수 있습니다. 위에서 조합키를 만들 때 keyDown(Ctrl), keyDown(A), KeyUp(A), KeyUp(Ctrl)과 같이 만들었습니다. 대부분은 정상 동작할겁니다. 하지만, 윈도우 메시지를 인터셉트해서 분석하는 소프트웨어라면 명령이 수행되지 않을수도 있습니다. 대부분의 매크로 프로그램들이 단순하게 작성되기 때문이죠. 그래서 처음 코드를 아래와 같이 작성하는게 더 좋습니다.
오토핫키 매크로, C# 매크로, 심플핫키, 이미지맥스, 파이썬 매크로, RPA 매크로, 메모리 매크로, 이미지 매크로, 매크로 커뮤니티, 매크로 제작 강좌, 무료 매크로 다운로드 http://ngmsoftware.com
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
'매크로' 카테고리의 다른 글
RPA 매크로 프로그램 (0) | 2022.05.23 |
---|---|
c# 비활성 픽셀서치 (0) | 2022.04.19 |
파이썬 마우스 랜덤 이동 (0) | 2022.04.07 |
winscp 비활성 클릭 매크로 (0) | 2022.03.30 |
핸드폰 매크로, 앱플레이어 매크로 (0) | 2022.03.26 |
댓글