엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
안녕하세요. 엔지엠소프트웨어입니다. 이 글을 처음부터 끝까지 읽어보고 따라하면 파이썬으로 마우스, 키보드와 이미지 서치 매크로를 만들 수 있게됩니다. 초보자를 대상으로 아주~ 간단하게 알려 드리도록 하겠습니다. 엔지엠 에디터로 1분이면 만들수 있긴하지만~ 파이썬으로 게임이나 간단한 업무를 자동화 하고 싶은 분들도 많기 때문에 알아두면 좋을거 같네요. 참고로, 이 내용을 학습하더라도 다양한 환경에 적용하려면 많은 노력이 필요합니다. 개발자라면 응용력은 어느정도 있을테니 문제가 안되지만, 일반인이라면 많은 시행착오를 겪게 될거에요^^; 그래도, 시작이 반이니 일단 만들어두면 공부하고자 하는 열정이 불타오를겁니다! 우선, 개발 환경을 만들어야 합니다. 아래 사이트에서 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에서 파이썬을 개발하기 위한 환경 구성을 완료했습니다. 생각보다 쉽고 간단하죠? 그림만 보고 잘 따라했으면 아마 여러분들도 동일한 결과를 확인 했을겁니다. 개발자라면 뭐~ 안보고도 했을거에요^^; 요즘보면 왕초보도 개발자가 될 수 있다는 광고를 종종 보곤 합니다. 개발자도 나름 전문직인데 3개월 또는 6개월만에 개발자가 될 수 있다는게 정말 가능한지 의문이 들기도 합니다. 하지만~ 누군가는 노력해서 분명 될거예요. 요즘 같이 어려운 시기에는 노력 만큼 가시적인 결과를 가져다 주는건 없을겁니다~ 연봉 1억 개발자가 되기 위해서 같이 달려봅시다!
터미널에서 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는 현재 마우스 좌표에 대해 상대적입니다. 상대적인 좌표 이동은 현재 위치에 영향을 받으므로 원하는 위치로 이동하려면 현재의 마우스 위치를 알아내야 합니다. 그래야 목표 지점으로 가기 위한 절대 좌표를 알 수 있으니까요. 그러면 현재 마우스의 위치는 어떻게 알 수 있을까요?
# pyautogui 모듈을 가져옵니다. import pyautogui # position 함수는 마우스의 현재 위치를 반환합니다. print(pyautogui.position())
실행하면 터미널에 현재 마우스의 위치가 출력됩니다. print 는 다른 언어에서 제공하는 Console과 동일합니다. 표준 출력을 담당하죠. 어떤 이유인지 명확하지는 않으나, 콘솔은 데스크에서 입출력이 가능한 장치에서 유래했기 때문에 표준 출력을 담당하는 경우 프린트를 사용하는게 아닌가 생각됩니다. 아무튼, 대부분의 언어가 콘솔에서 출력을 확인하지만, 이또한 Output으로 분리되기도 합니다. 아무튼, 파이참이나 주피터와 같은 파이썬 개발 전용 IDE는 콘솔을 제공합니다.
PS C:\Users\ngmas\Desktop\PythonMacro> & C:/Users/ngmas/AppData/Local/Microsoft/WindowsApps/python3.9.exe c:/Users/ngmas/Desktop/PythonMacro/start.py Point(x=716, y=367) PS C:\Users\ngmas\Desktop\PythonMacro>
자~ 우리는 이제 현재 마우스 위치를 알아냈습니다. 그러면 내가 원하는 절대 좌표로 이동하려면 어떻게 해야 할가요? 예로 좌측 상단의 100, 100으로 이동한다고 생각해봅시다. 아주 간단한 산수 문제인데요. 아래와 같이 목표 위치에서 현재 위치를 빼주면 됩니다. 실행하고 확인 해볼까요?
# pyautogui 모듈을 가져옵니다. import pyautogui # position 함수는 마우스의 현재 위치를 반환합니다. x, y = pyautogui.position() # X 100, Y 100 좌표로 이동하기 위해 # 목표 위치에서 현재 위치를 빼줍니다. pyautogui.move(100 - x, 100 - y, 3)
이렇게 절대 좌표로 쉽게 이동할 수 있습니다. 하지만, 더 쉽게 절대 좌표로 이동할 수 있는 함수가 있는데요. 당연한 말이지만~ 대부분은 이 함수를 이용해서 매크로를 만들고 있습니다. 물론, 엔지엠 에디터도 상대 좌표와 절대 좌표로 이동할 수 있는 방법을 제공합니다. 상대 좌표가 필요한 경우는 FPS 게임이나 마우스로 방향을 정하는 MMORPG 게임에서 사용할 수 있습니다. 이외에는 대부분 절대 좌표를 사용하고 있습니다. 절대 좌표로 이동하려면 moveTo 함수를 이용해야 합니다. 아래와같이 코드를 변경하고 실행 해보세요.
# pyautogui 모듈을 가져옵니다. import pyautogui # 절대 좌표 100, 100 위치로 마우스를 이동합니다. pyautogui.moveTo(100, 100, 3)
특별히 계산하지 않아도 원하는 목표 지점으로 마우스가 이동되는걸 알 수 있습니다. 자 그러면~ 본격적으로 내가 원하는 위치를 클릭해보죠. 일단 클릭할 위치가 어딘지 알아내야 합니다. 이걸 알아내기 위해서는 좌표를 확인해야겠죠? 이건 위에서 설명한 position 함수를 이용해야 합니다. 단순히 마우스 위치만을 출력하면 터미널에 찍히는 좌표를 외워야 하는 불편함이 있습니다. 그래서, 윈도우 이벤트를 후킹해서 클릭하는 경우 멈추도록 해보겠습니다. 아래 코드로 수정하세요.
# pyautogui 모듈을 가져옵니다. import pyautogui # 마우스 이벤트를 후킹하기 위해 win32 모듈을 가져옵니다. import win32api # 마우스 좌표값을 게속해서 출력하기 위해 와일문을 만듭니다. while True: # win32 api로 마우스의 상태를 가져옵니다. down = win32api.GetKeyState(0x01) # 마우스 상태가 다운이면 와일문을 탈출합니다. if down == 0: break # 마우스의 현재 좌표를 출력합니다. print(pyautogui.position())
음~ 개발자가 아니라면 위 코드는 좀 어려울 수 있습니다. 주석을 친절(?)하게 달아두긴 했지만, 일반인이 보기에는 이해하기 어려울겁니다. 아무튼, 실행해보면 어떻게 돌아가는지 확인할수 있는데요. 코드에 적혀 있는 주석과 실제 동작을 비교해보면 어느정도 이해할 수 있을거라고 생각합니다. 만약, 실행이 되지 않는다면 아래 명령을 통해 win32api를 설치 해주세요.
...
...
...
원본 보기
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
댓글