NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Python pyautogui 매크로 만들기. (with Python)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 파이썬 또는 C#으로 매크로(Macro) 만들기는 여러차례 설명한 내용들이 있으니 아래 링크를 참고하세요. 이 글의 내용을 학습하려면 파이썬 개발 환경을 먼저 갖추어야 합니다. 그래야 예제를 테스트할 수 있으니까요!

    1. 파이썬 매크로 만들기 - [ 개발 환경 ]
    2. 파이썬 매크로 만들기 - [ 마우스 ]
    3. 파이썬 매크로 만들기 - [ 키보드 ]
    4. 파이썬 매크로 만들기 - [ 이미지 서치 ]

     

    심플한 매크로 프로그램은 모니터 화면의 이미지를 인식(캡쳐, 스크린샷)해서 마우스로 클릭하거나 드래그하고, 키보드로 타이핑하는 동작을 말합니다. 위에 1부터 4까지 내용을 학습하면 기본적인 매크로는 누구나 쉽게 만들 수 있습니다. 다만, 업무를 자동화하기 위한 구조적인 설계나 응용은 또다른 문제라서 사람마다 차이가 있을수밖에 없습니다. 시간이 돈이기 때문에 잘 만들어진 프로그램(오토핫키, 엔지엠 매크로등등...)을 사용하는게 좋겠지만, 자신의 시간이 지불하는 돈보다 가치가 떨어진다면 직접 만드는게 더 이익이겠죠^^;

    vHbT7W1.jpg

     

     

    1부 개발 환경을 갖추었으면 pyautogui로 어떤 것들을 할 수 있는지 하나씩 테스트 해봅시다. 우선, 아래와 같이 pyautogui 모듈을 사용하겠다고 선언해줍니다.

    import pyautogui as ngm

     

    현재 화면 해상도를 알아볼까요? 제 모니터는 1920x1080입니다. 실행은 Ctrl+Alt+N입니다. 하단의 출력창에 해상도가 표시됩니다.

    import pyautogui as ngm
    print(ngm.size())

    FnmkDpD.gif

     

     

    현재 마우스 위치를 좌표로 반환하려면 position 함수를 호출하면 됩니다.

    ngm.position()

    1A5bMmE.gif

     

     

    마우스 좌표가 화면상에 존재하는지 확인하려면 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!')

    XMXor5g.gif

     

     

    대부분의 언어들이 2가지 함수로 사용자에게 메세지창을 표시합니다. 자바스크립트나 파이썬은 alert을 사용하고, C#은 MessageBox를 사용합니다. MsgBox도 있군요~ 

    import pyautogui as ngm
    result = ngm.confirm('확인 또는 취소를 눌러보세요!')
    print(result)
    result = ngm.prompt('문자를 적어보세요!')
    print(result)

    K1qNfUB.gif

     

     

    전체 화면을 캡쳐하는 방법은 screenshot 함수를 사용하는겁니다. 전체 화면을 캡쳐해서 지정한 위치에 저장해줍니다. 너무 쉽죠?

    import pyautogui as ngm
    ngm.screenshot('C:\\Users\\ngmas\\Desktop\\ngm.png')

     

    윈도우 화면에서 이미지를 찾기 위해 아래와 같은 이미지를 my_pc.png로 저장했습니다.

    p72fMyW.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)

    lgVdZNy.png

     

     

    이외에도 마우스와 키보드를 제어하는 함수가 있습니다. 이런 내용들은 이 글의 서두에 있는 링크를 참고하시면 됩니다~

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.