Python pyautogui 매크로 만들기. (with Python)
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. 파이썬 또는 C#으로 매크로(Macro) 만들기는 여러차례 설명한 내용들이 있으니 아래 링크를 참고하세요. 이 글의 내용을 학습하려면 파이썬 개발 환경을 먼저 갖추어야 합니다. 그래야 예제를 테스트할 수 있으니까요!
심플한 매크로 프로그램은 모니터 화면의 이미지를 인식(캡쳐, 스크린샷)해서 마우스로 클릭하거나 드래그하고, 키보드로 타이핑하는 동작을 말합니다. 위에 1부터 4까지 내용을 학습하면 기본적인 매크로는 누구나 쉽게 만들 수 있습니다. 다만, 업무를 자동화하기 위한 구조적인 설계나 응용은 또다른 문제라서 사람마다 차이가 있을수밖에 없습니다. 시간이 돈이기 때문에 잘 만들어진 프로그램(오토핫키, 엔지엠 매크로등등...)을 사용하는게 좋겠지만, 자신의 시간이 지불하는 돈보다 가치가 떨어진다면 직접 만드는게 더 이익이겠죠^^;
1부 개발 환경을 갖추었으면 pyautogui로 어떤 것들을 할 수 있는지 하나씩 테스트 해봅시다. 우선, 아래와 같이 pyautogui 모듈을 사용하겠다고 선언해줍니다.
import pyautogui as ngm
현재 화면 해상도를 알아볼까요? 제 모니터는 1920x1080입니다. 실행은 Ctrl+Alt+N입니다. 하단의 출력창에 해상도가 표시됩니다.
import pyautogui as ngm
print(ngm.size())
현재 마우스 위치를 좌표로 반환하려면 position 함수를 호출하면 됩니다.
ngm.position()
마우스 좌표가 화면상에 존재하는지 확인하려면 onScreen 함수를 사용합니다. 마우스가 화면 안에 있으면 True입니다.
import pyautogui as ngm
x, y = ngm.position()
print(ngm.onScreen(x, y))
# Result
[Running] python -u "d:\MyWorkspace\pyautogui_test.py"
True
[Done] exited with code=0 in 0.139 seconds
매크로를 작성 하다보면 사용자에게 어떤 내용을 표시하거나 변수에 어떤 값이 들어있는지 확인해야 할 때가 있습니다. 이런 경우에는 얼럿(alert)을 사용합니다.
import pyautogui as ngm
ngm.alert('Welcome to NGMsoftware!')
대부분의 언어들이 2가지 함수로 사용자에게 메세지창을 표시합니다. 자바스크립트나 파이썬은 alert을 사용하고, C#은 MessageBox를 사용합니다. MsgBox도 있군요~
import pyautogui as ngm
result = ngm.confirm('확인 또는 취소를 눌러보세요!')
print(result)
result = ngm.prompt('문자를 적어보세요!')
print(result)
전체 화면을 캡쳐하는 방법은 screenshot 함수를 사용하는겁니다. 전체 화면을 캡쳐해서 지정한 위치에 저장해줍니다. 너무 쉽죠?
import pyautogui as ngm
ngm.screenshot('C:\\Users\\ngmas\\Desktop\\ngm.png')
윈도우 화면에서 이미지를 찾기 위해 아래와 같은 이미지를 my_pc.png로 저장했습니다.
아래 코드는 전체 화면을 저장하고, 윈도우 화면에서 my_pc.png를 찾아줍니다. 그리고, 찾은 이미지의 가운데 좌표를 반환한 후 출력합니다. 코드가 점점 복잡해지고 있습니다. 그래도 다른 프로그래밍 언어들에 비하면... 쉬운편입니다. 패키지가 워낙 잘 되어 있어서요^^
import pyautogui as ngm
# 전체 화면 저장
ngm.screenshot('C:\\Users\\ngmas\\Desktop\\ngm.png')
# 이미지 서치
temp = ngm.locateOnScreen('C:\\Users\\ngmas\\Desktop\\my_pc.png')
# 찾은 이미지의 가운데 위치 찾기
center = ngm.center(temp)
print(center)
#Result
[Running] python -u "d:\MyWorkspace\pyautogui_test.py"
Point(x=41, y=38)
[Done] exited with code=0 in 0.585 seconds
위 코드를 아래와 같이 좀 더 간단하게 처리할수도 있습니다. 코드가 훨씬 더 간결해졌습니다. 엔지엠 매크로에서 사각형의 중앙 좌표 값을 가져오려면 [ 사각형 좌표 변환 ] 액션을 사용하세요. 중앙뿐만 아니라 사각형의 9방향의 좌표를 쉽게 추출할 수 있습니다.
import pyautogui as ngm
center = ngm.locateCenterOnScreen('C:\\Users\\ngmas\\Desktop\\my_pc.png')
print(center)
이외에도 마우스와 키보드를 제어하는 함수가 있습니다. 이런 내용들은 이 글의 서두에 있는 링크를 참고하시면 됩니다~
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글Angular - Modal or Popup 만들기. 22.03.18
- 다음글WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages) 22.03.13
댓글목록
등록된 댓글이 없습니다.