책 쓰는 엔지니어

키보드, 마우스를 자동으로 움직이는 매크로 본문

일반인을 위한 업무자동화

키보드, 마우스를 자동으로 움직이는 매크로

halfbottle 2020. 5. 31. 12:47
728x90
반응형

  반갑다. 이 매거진에 마지막으로 글을 업로드한지 거의 일 년이 지났다. 1년 전, IT서적 전문 출판사인 생능출판사와 출판계약이 성사되면서 이 매거진에는 글을 올리지 않게 되었다. 그 대신이라고 하기는 뭐하지만 선물을 준비했다.


  1년이나 방치된 매거진인데, 잊혀질 만 한데도 꾸준히 조회수가 나오는게 너무 신기하다. 재밌는 것이, 주중에는 조회수가 가파르게 올라갔다가 주말이면 확 떨어진다. 업무 중에 도움을 받기 위해 검색하다가 유입되는 분들이 많다는 뜻이리라.


  물 들어올 때 노를 저어야 하지 않겠는가? 독자 여러분들을 위해 매크로 라이브러리를 만들어 봤다. 코딩 지식이 얕아도 간단하게 사용 가능한 매크로 라이브러리다. 바로 사용하셔도 좋고, 이 모듈을 활용하여 독자님의 업무에 특화된 매크로를 제작하는 용도로 사용하여도 좋다.

 

 

 

needleworm/pywinmacro

Windows macro for python3. Contribute to needleworm/pywinmacro development by creating an account on GitHub.

github.com

 

 

  위 링크를 누르면 레포지토리에 접근 가능하다. 이렇게 유용한 툴을 무료로 제공하다니, 기특하지 않은가? 우측 상단에 있는 ★STAR 버튼이나 한 번씩 눌러 주고 시작하자. 감사합니다.
  우선 파이썬 환경을 구축하는 것이 우선이다. 파이썬과 깃 배쉬가 설치되어 있다면 넘어가고, 설치되어 있지 않다면 아래 링크로 이동해 지시를 따르자.

 

 

 

업무 자동화를 위한 첫걸음 - 깃과 IDE 세팅

일반인을 위한 업무 자동화 매거진을 올린 것은 10시간 전이다. 그 짧은 시간 동안 조회수는 1,400여 건이 찍혔고 페이스북에 98회 공유되었다. 그만큼 많은 사람들이 업무 자동화에 관심이 있다는

bhban.tistory.com

 

  레포지토리를 클론한다. 이 글에서 방법을 상세하게 설명했었다.


$  git clone https://github.com/needleworm/pywinmacro
  


  파이썬이 설치되어 있다면 별도의 모듈을 설치할 필요가 없다. 여기 들어있는 pywinmacro.py 파일을 워킹 디렉터리에 복사하거나 이동한 다음 코딩을 진행하면 된다. 아래 명령어를 활용해 임포트하자.


>>>  import pywinmacro as pw


저작권

(1) 비영리적 사용

본 코드를 비영리적인 목적으로 활용하는 것은 자유입니다. 단, 본 코드에 기재된 저작자 정보를 지우지 말아주세요. 그리고 완성된 프로그램은 오픈소스로 대중에 공개하셔야 합니다.

(2) 교육적 목적

본 코드를 교육적 목적으로 활용하는 것은 무료입니다. 단, 본 코드에 기재된 저작자 정보를 지우지 말아주세요. 또한 코드가 교육 목적으로 어떻게 활용되는지에 대하여 저자가 매우 뜨거운 관심을 가지고 있사오니, 교육자료로 사용시 이메일로 연락을 부탁드립니다. 아울러 본 코드는 52개의 예제 코드가 수록된 '일반인을 위한 업무자동화(가제)' 책의 예제코드입니다. 본 코드보다도 활용도가 뛰어난 다양한 예제들이 함께 제공되고 있사오니 교재의 구매 문의는 생능출판사로 부탁드립니다. (2020년 3월 현재 미출간)

(3) 상업적 목적

본 코드를 상업적 목적으로 사용하는 것은 금지되어 있습니다. 본 코드를 출판물에 수록하거나, 본 코드를 활용하여 상업적 프로그램을 제작하는 것은 금지되어 있습니다.

(4) 독자의 코드 활용

생능출판사를 통해 출간될 '일반인을 위한 업무자동화(가제)' 책을 구매히신 독자님께서는 본 코드를 자유롭게 사용하실 수 있습니다. 상업적 프로그램을 제작하는 것도 가능합니다. 단, 본 코드를 출판물에 수록하는 등의 행위는 금지되어 있습니다. 출판사로 문의 부탁드립니다.

마우스의 조작

 

1. 마우스를 특정위치로 이동시키기


>>>    pw.move_mouse(location)

 

location은 x, y좌표가 기록된 튜플입니다. 예를 들어, x좌표 100, y좌표 200인 지점으로 마우스 커서를 이동시키고 싶다면 아래와 같이 함수를 호출하면 됩니다.

 

>>>    pw.move_mouse((100, 200))

2. 마우스의 현재 좌표 구하기


>>>    pw.get_mouse_position()

3. 마우스를 지정된 위치로 이동하고, 왼쪽 버튼을 클릭하는 함수

>>>    pw.click(location)


  location은 x, y좌표가 기록된 튜플입니다. 예를 들어, x좌표 100, y좌표 200인 지점으로 마우스 커서를 이동하여 클릭을 하고 싶다면 아래와 같이 함수를 호출하면 됩니다.

>>>    pw.click((100, 200))

4. 마우스를 지정된 위치로 이동하고, 오른쪽 버튼을 클릭하는 함수

>>>    pw.right_click(location)

 

location은 x, y좌표가 기록된 튜플입니다. 예를 들어, x좌표 100, y좌표 200인 지점으로 마우스 커서를 이동하여 우클릭을 하고 싶다면 아래와 같이 함수를 호출하면 됩니다.     

>>>    pw.right_click((100, 200))

5. 더블클릭

>>>    pw.double_click(location)

6. 마우스의 현재 위치에서 왼쪽 버튼을 클릭하는 함수

>>>    pw.l_click()

7.  마우스의 현재 위치에서 오른쪽 버튼을 클릭하는 함수

>>>    pw.r_click()

8. 드래그드롭

>>>    pw.drag_drop(from, to)

 

  from과 to는 각각 x, y좌표가 기록된 튜플입니다. from은 클릭 시작점의 좌표, to는 클릭을 해제할 종료점의 좌표입니다. 예를 들어 (200, 400) 지점을 클릭한 채로, (300, 500)까지 드래그하고 싶다면 아래와 같이 함수를 호출하면 됩니다.

 

>>>    pw.drag_drop((200, 400), (300, 500))

키보드의 조작


본 코드는 총 99종류의 키 입력을 지원합니다. 처음에는 101/103키를 지원하는 코드를 만들려고 하였으나, 자주 쓰이지 않는 키의 경우 삭제해 두는 것이 사용자가 헷갈릴 염려가 적을 것으로 생각되어 99키로 제한하였습니다.

9. 키를 누르는 함수

>>>    pw.key_on(key)

 

  key는 누르고 싶은 키입니다. 키보드에 적혀 있는 영문자를 그대로 입력하면 왠만해서는 작동합니다. 상세한 키 매핑은 코드를 편집기로 열어서 확인하시기 바랍니다.

10. 키를 떼는 함수

>>>    pw.key_off(key)

 

  key는 떼고 싶은 키입니다. 키보드에 적혀 있는 영문자를 그대로 입력하면 왠만해서는 작동합니다. 상세한 키 매핑은 코드를 편집기로 열어서 확인하시기 바랍니다.

11. 키를 한 번 눌렀다 떼는 함수

>>>    pw.key_press_once(key)

12. 시스템에 글자 입력

>>>    pw.type_in(string)

 

  string은 시스템에 입력하고 싶은 문자열(스트링)입니다. 글자를 입력할 수 있는 공간을 클릭한 뒤, 이 함수를 실행하면 어지간해서는 글자가 잘 입력됩니다.간혹 사용하시는 컴퓨터에 따라 공백이 한 칸 더 삽입되는 경우가 있습니다. 이 경우 입력 후 백스페이스를 한 번 눌러서 공백을 지워주세요. 아래와 같이 사용하시면 됩니다.

 

>>>  pw.type_in(string)  pw.key_press_once("backspace")

화면 인식 관련

1. 특정 좌표의 색상을 16진수로 읽어오기

>>>  pw.get_color(location)

2. 특정 좌표의 색상이 원하는 색상이 될 때까 작업을 중단하고 기다리는 함수

>>>  pw.awake_when_color_match(location, color)

 

  location은 좌표가 입력된 튜플이고 color는 16진수 색상값입니다. location 위치에 있는 픽셀 값의 색상이 color와 동일해질때까지 작업을 멈추고 기다립니다.

3. 특정 좌표의 색상이 지정된 색상과 달라질때까지 작업을 중단하고 기다리는 함수

>>>  ps.awake_when_color_change(location, color)

 

  location은 좌표가 입력된 튜플이고 color는 16진수 색상값입니다. location 위치에 있는 픽셀 값의 색상이 color와 동일해질때까지 작업을 멈추고 기다립니다.


  끝이다. 위 함수들을 잘 조합하고 순서를 고민하면, 컴퓨터로 하는 단순 업무는 거의 대부분 자동화할 수 있다. 업무 자동화용 매크로를 만들 때에는 아래 순서를 따르면 된다.

 

    1. 내가 해야 하는 업무를 최대한 한 단계 한 단계 작은 단위로 쪼개기  

    2. 각각의 단계를 자동화하는 매크로를 만들기

    3. 조건에 맞추어 반복하기


  2번 단계가 너무 복잡하고 어렵게 느껴진다면 1번 과정이 불충분하다는 뜻이다. 최대한 작은 단위로 쪼개야 한다. 예를 들면, 아래와 같이 말이다.


    마우스 이동시키기

    마우스 클릭하기

    f 키 누르기

    Ctrl 키를 누른 채로 v 키를 누르기

    화면 상단의 색상이 무슨 색상인지 확인하기

    PageDown 키를 한 번 누르기

    더블클릭하기

    이름을 드래그하기

    복사하기

    다른 곳에 붙여넣기

    .....        

 

  위와 같이 작은 단위로 작업을 쪼갰다면? 이 코드를 활용해 매크로를 만들면 된다. 상세한 설명은 다음에 여유가 생기면 설명해 보도록 하겠다. 코드만 툭 던지고 사라져서 너무 죄송하다.


  위 내용들은 이 매거진을 정주행한 독자분께서는 쉽게 수행할 수 있을 것으로 생각한다. 얼른 책이 나오면 좋겠다. 너무 설레서 벌써 예제도 52개나 만들었단 말이다.


  이 매크로를 활용하면 많은 일을 할 수 있다. 그 중에서 트위터에 자동으로 로그인 해서 글을 써 주는 봇을 만들면 유용하다. 광고 살포 또는 여론 조작 용도로도 사용 가능하기 때문이다.

 

  본 매크로로 자동으로 글을 올리는 트위터 계정이다. 아래 스크린샷처럼 작동한다.

 

유용한 정보를 제공하는 테스트도 해 봤고

 

 

최신 뉴스를 자동으로 긁어오는 봇도 테스트 완료

  

  이 매크로를 사용한 화려한 자동화 예제들은 물론, SNS 자동화 예제까지 모두 준비되어 있다. 좋아요, 댓글, 캡처, 게시물 업로드 등등 SNS나 인터넷을 활용한 거의 모든 작업은 자동화가 가능하다. 상세한 정보는 생능출판사를 통해 출간될 업무 자동화 책을 참조하시기 바란다. 원고 작업 진행중이며, 출간일정은 생능출판사로 문의 부탁드린다.

 

 

치즈케익 스튜디오

아트워크 그룹 치즈케익 스튜디오

cheesecake.quv.kr

 

코딩하는 공익

하루 만에 3만여 명이 본 브런치 화제의 글 〈크롤러를 이용해 우체국 등기우편을 자동으로 정리해 보자〉의 주인공, ‘코딩하는 공익’ 반병현 작가의 첫 에세이. 단숨에 인기를 얻고 좋은 일��

book.naver.com

 

법대로 합시다

이 책은 실생활에 쓰이는 법학지식, 교양 수준의 법학지식, 법이 무엇인지 가볍게 접해 보고자 하는 사람들을 위한 교양서적의 성격을 띠고 있습니다. 경제적 풍요를 위해 재테크에 시간을 투자

book.naver.com

 

실전 민사소송법

이 책은 도서출판 해피로라를 통해 2017년 출간된 ‘실전 민사소송법’의 2판 격에 해당합니다. 2019년 연말까지의 최신판례가 업데이트되었습니다. 이 책은 변호사시험 또는 변리사시험을 준비��

book.naver.com

 

공학자의 지혜묵상

공학자가 지혜를 다루는 성경인 잠언과 전도서를 묵상한 글입니다. 논리와 지성이 신학을 만나 생기는 화학반응을 고스란히 녹여보았습니다.

book.naver.com

 

 

 

 

 

728x90
반응형
Comments