본문 바로가기
마우스 매크로

pyautogui 설정시간에 동작

by 업무자동화 2023. 12. 21.
반응형

유료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product_review 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #매크로프로그램 #메크로 #g매크로 #마우스매크로 #키보드매크로 #엑셀매크로 #키매크로 #수강신청매크로 #로지텍마우스매크로 #매크로키보드 #파이썬매크로 #매크로뜻 #매크로마우스 #로지텍매크로 #ld플레이어매크로 #오토마우스매크로 #키보드마우스매크로 #오토핫키매크로 #이미지매크로 #이미지인식매크로 #하드웨어매크로 #화면인식매크로 #선착순매크로 #이미지서치매크로 #한글매크로 #심플핫키 #simplehotkey #지존매크로 #짜맥 #챗굴

 

  • 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
  • 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
  • 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)

 

안녕하세요. 엔지엠소프트웨어입니다. 사용자가 설정한 시간에 매크로가 실행되게 하는 방법은 여러가지가 존재합니다. 시작 시간 액션과 [ 타이머 틱 등록 ] 액션 그리고, [ 예약 작업 등록 ] 액션이 있습니다. 이 액션들은 설정한 시간에 스크립트를 실행합니다. 이 예제를 테스트하기 위해 아래와 같이 엔지엠 에디터를 실행하고, 새로운 스크립트를 추가하세요.

 

 

1. 시작 시간

시작 시간은 매인 스크립트에 등록한 후 설정한 날짜와 시간이되면 서브 스크립트가 실행되는 방식입니다. 날짜와 시간을 선택해야 하기 때문에 한번만 수행됩니다. 또한, 설정한 시간이 될 때가지 매인 스크립트는 멈춰있게 됩니다. 기본적으로 동기적으로 수행되는 액션입니다. 예제에 사용되는 서브 스크립트는 아래와 같습니다.

 

 

도구 상자 > 시간 > 시작 시간 액션을 추가하세요. 위의 서브 스크립트 "타이머 예제.ngs"를 선택하고, 날짜와 시간을 설정하세요. 그리고, 실행을 누르면 아래와 같이 설정한 시간에 서브 스크립트가 동작하는걸 확인할 수 있습니다.

 

 

이번에는 매인 스크립트과 같이 동작하는 방법을 알아볼건데요. 아래와 같이 매인 스크립트에서 반복하도록 스크립트를 구성 해줍니다. 시작 시간의 비동기 옵션이 False이므로, 서브 스크립트가 정해진 시간에 실행된 후 매인 스크립트가 작동됩니다.

 

 

스크립트를 실행하면, 매인 스크립트가 멈춰 있고, 시작 시간이 될 때 서브 스크립트가 실행됩니다. 서브 스크립트가 완료되면 매인 스크립트가 실행됩니다.

 

 

매인과 서브가 동시에 설정한 시간에 실행되도록 하려면 아래와 같이 비동기 옵션을 True로 설정하세요. 그리고, 다시 실행해보세요. 아래 동영상처럼 서브 스크립트가 실행되면서 매인도 [ 그룹 ] 액션들과 [ 액션 이동 ] 액션이 같이 실행되는 걸 확인할 수 있습니다. 비동기 옵션은 매인과 서브 스크립트가 각각 동작하도록 해줍니다.

 

 

2. 타이머 틱 등록

[ 타이머 틱 등록 ] 액션과 [ 예약 작업 등록 ] 액션은 시작 시간 액션과 다르게 각각 타이머 틱 삭제와 [ 예약 작업 삭제 ] 액션이 존재합니다. 이 둘은 별도의 메모리에 예약을 걸어놓고 매인 스크립트는 실행되는 방식입니다. 그리고, 시작 시간 액션과 차이점은 등록된 틱 또는 스케줄(예약)에 따라 무한 반복된다는 점입니다. 그렇기 때문에 각각 등록된 틱과 예약을 삭제하기 위한 액션이 별도로 존재합니다. 아래 그림을 참고해서 타이머 틱 등록 액션을 시작 시간 액션 아래에 추가하세요. 그리고, 시작 시간 액션의 체크 박스는 풀어주세요.

 

 

타이머 틱 등록 액션의 아이디는 "5초 틱"으로 설정 해줍니다. 그리고, 하단의 실행 간격을 5000(5초)으로 설정하세요. 이 액션은 실행 간격에 설정한 시간마다 틱(Tick)을 발생시킵니다. 다시 말해서 5초마다 서브 스크립트를 반복해서 실행한다는 뜻입니다.

 

 

매인 스크립트가 실행되면서 5초마다 서브 스크립트가 실행되는걸 확인할 수 있습니다. 여기서 중요한 점은 비동기 옵션이 False이기 때문에 서브 스크립트가 실행될 때 매인 스크립트는 멈춘다는 것입니다. 그리고, 서브 스크립트가 완료되면 매인 스크립트가 다시 실행됩니다.

 

 

비동기를 True로 설정하면 서브 스크립트 실행 여부와 관계없이 매인은 계속해서 실행됩니다. 비동기 True False의 차이점을 잘 이해해야 합니다.

 

 

3. 예약 작업 등록

예약 작업 등록은 크론탭(Crontab)을 사용하여 좀 더 막강한 스케줄러를 구현할 수 있습니다. 방식은 타이머 틱 등록과 동일합니다. 다만, 단순한 실행 주기가 아닌 복합적인 작업을 가능하게 해줍니다. 크론탭은 아래와 같이 설정할 수 있습니다. 마지막 요일에서 0과 7은 일요일입니다. 1부터 월요일입니다.

*           *           *            *           *           *
초(0-59)    분(0-59)    시간(0-23)   일(1-31)    월(1-12)    요일(0-7)

 

 

크론탭이 다소 복잡해 보일 수 있지만, 몇가지 규칙만 알면 누구나 쉽게 스케줄러를 작성할 수 있습니다. 아래는 매초 실행되는 스케줄러입니다.

* * * * * *

 

매분 실행하려면 아래와 같이 작성합니다.

0 * * * * *

 

매주 금요일 오전 5시 45분 30초에 실행되는 스크립트입니다.

30 45 5 * * 5

 

매일 매시간 20분 간격으로 실행되는 스크립트입니다. (매일 매시간 0분, 20분, 40분)

0 0,20,40 * * * *

 

매일 1시 0분부터 30분까지 매분 실행되는 스크립트입니다.

0 0-30 1 * * *

 

매 10분마다 실행되는 스크립트입니다.

0 */10 * * * *

# 또 다른 방법
0 0,10,20,30,40,50 * * * *

 

이제 조금 복잡하게 응용 해볼까요? 5일에서 6일까지 2시,3시,4시에 매 10분마다 스크립트를 실행합니다.

0 */10 2,3,4 5-6 * *

 

 

사용자가 설정한 시간에 매크로가 실행되게 하려면 여러가지 방법들이 존재합니다. 가장 좋은 방법은 [ 예약 작업 이벤트 ]를 사용하는겁니다. 예약 작업 이벤트 예제를 참고 해보시면 좋을거 같습니다. 이벤트는 현재 스크립트에서 비동기로 실행되고, 백그라운드에서 시간을 감지합니다. 그리고, 액션 이동을 사용하기 때문에 현재 스크립트에서 모든 동작을 처리할 수 있습니다. 예약 작업 이벤트를 사용할 수 없는 환경이라면 [ 예약 작업 등록 ] 액션을 사용해야 합니다. 엔지엠 매크로 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.

※ 예제 스크립트가 첨부되어 있으니 다운로드 받아서 열어보세요.

 

 

아래 그림과 같이 예약 작업 등록 액션을 추가해줍니다. 그리고, 아래로 [ 그룹 ]과 [ 액션 이동 ]을 추가해줬는데요. 그룹과 액션 이동은 매인 스크립트가 종료되지 않도록 무한 반복하는 루틴입니다. 사실 여기에 뭔가 다른 동작을 수행하는 스크립트를 구성해야 합니다. 예약 작업 등록 액션은 서브 1 스크립트를 선택해줬습니다. 서브 1 스크립트는 메세지 박스를 표시하고, 서브 스크립트가 실행되었다는걸 알려주는 단순한 동작만 수행합니다.

 

 

서브 1을 열어보면 [ 메세지 박스 ] 액션 하나만 들어 있습니다. 옵션을 보면 자동 종료가 5입니다. 5초후에 자동으로 메세지 창을 닫겠다는 의미입니다. 그리고, 메세지 창이 언제 닫힐지 시각적으로 확인하려면 타이머 표시 속성을 True로 변경하세요. 그러면, 메세지 창에서 닫히는 시간을 표시할 수 있습니다.

 

 

크론탭 또는 크론잡이라고 부르는 크론 문법을 사용해서 이 기능을 구현해야 합니다. 크론탭 문법에 대해 좀 더 자세하게 알고 싶다면 아래 글을 참고하세요.

[ 예약 스케줄러 크론탭 작성 방법 ]

[ 예약 작업 등록 액션이 실행되지 않는 이유와 해결 방법 ]

 

이 학습에서 크론탭을 아래와 같이 설정 했습니다. 젤 앞 부분이 초를 나타냅니다. 스케줄러를 등록할 때 보통 Date(년월일)와 Time(시분초)을 설정해야 합니다. 이 때 문제는 날짜 값을 입력해야 하므로 내일이 되면 날짜가 다르기 때문에 더이상 작업을 수행할 수 없게됩니다. 그래서, 시간만 설정해서 사용하는데 이렇게 사용하기 보다는 크론탭을 쓰는게 더 직관적이고 쉽습니다.

  • */10 * * * * *

 

 

만약, [ 시작 시간 ] 액션을 사용한다면 아래와 같이 설정할 수 있습니다. 이 액션과 예약 작업 등록의 차이점은 현재 스크립트가 실행되면서 서브 스크립트를 실행하는지 여부입니다. 예약 작업 등록과 시작 시간 액션을 모두 비동기로 설정해보세요. 예약 작업 등록은 서브 스크립트가 실행될 시간을 에약 해두었기 때문에 매인 스크립트가 실행됩니다. 하지만, 시작 시간은 사용자가 설정한 시간이 될때까지 멈춰있습니다. 비동기로 설정했으면 이 때부터 매인과 서브 스크립트가 같이 실행됩니다. 미묘한 차이이긴 하지만, 로직을 구성할 때는 다른 동작입니다. 원하는 동작 방식이 어떤거냐에 따라서 사용해야 하는 액션도 달라지기 때문입니다.

 

 

이런 종류의 액션들은 자신을 중지하기 위해 필수로 아이디를 입력해야 합니다. 대부분 에디터 하단의 아웃풋에서 알려주는 내용을 잘 안보는 경향이 있습니다. 이런 종류의 액션들이 동작하지 않는다고 하는 분들의 대부분 문제점은 하단에 알려주는 내용대로 액션을 처리하지 않았기 때문입니다. 만약, 의도한데로 동작하지 않는다면 아웃풋에 나오는 경고 또는 에러 메세지를 확인 해보세요. 대부분 액션 아이디를 설정하지 않아서 발생하는 문제일겁니다^^

 

자~ 여기까지 테스트가 되었다면 매크로를 실행하고, 특정 시간이 흐른뒤에 중지하는 방법도 직접 만들 수 있을겁니다. 가장 간단한 방법은 시작 시간 또는 예약 작업 등록으로 특정 루틴이 실행되었을 때 [ 종료 시간 ] 액션을 사용하거나 [ 타이머 틱 등록 ] 액션을 등록하는겁니다. 타이머 틱은 설정한 시간이 흐른뒤에 액션이 실행됩니다. 직관적이고 쉬운 방법은 [ 타임 아웃 이벤트 ] 액션을 사용하는겁니다. 이벤트가 다루기가 더 쉽기 때문입니다. 이제 정상적으로 동작하는지 테스트 해볼까요?

https://youtu.be/ZhfY4-enev8

 

 

위 동영상에서 보듯이 크론탭에 의해 매분 10초마다 서브 스크립트가 비동기로 실행됩니다. 그리고, 서브 스크립트는 자신이 실행되었다는걸 알려주기 위해 메세지 박스가 실행되고 5초후에 자동으로 종료됩니다. 그리고 다시 10초 간격(0, 10, 20, 30, 40, 50)으로 서브 스크립트가 실행됩니다. 간단한 내용이지만, 처음 이런 내용을 접하게 되면 이해하는게 많이 힘들겁니다. 사람은 기본적으로 멀티로 생각할 수 없고, 경험해본적도 없기 때문입니다. 개발자는 프로그래밍 세계에 들어오면서 부터 멀티 환경에 지속적으로 노출되다보니 너무나 당연하게 생각하는 동작입니다. 그래서, 이런 부분을 설명하기가 사실 많이 힘듭니다. 이해시키는게 가장 힘든 부분이기도 하죠^^; 현실 세계에서 물리적으로 동시에 실행되는 현상이 없으니까요. 논리적인 개념을 설명한다는게 쉽지 않은 일이기도 합니다.

 

정말 최선을 다해서 쉽게 설명하려고 해도 어려운 부분은 존재합니다. 그래서, 고객 서비스방에서 질문을 받고 즉각적으로 답변을 드리고 있습니다. 이해가 될때까지 하다보면 언젠가는 개발자가 생각하는 것처럼 물리적인 현상이 아닌 논리적인 현상에 대해 이해하게 되고, 머리속에서 프로세스가 병렬로 어떻게 흘러가는지 그려질겁니다. 이건 저도 마찬가지였습니다. 처음 개발에 입문했을 때 "왜?"라는 질문이 머리속에서 떠나질 않았으니까요. 그런데, 계속해서 보면서 이해하려고 노력하다보니 어느순간 깨달음을 얻은것처럼 이해가 되었고, 그동안 잘 이해하지 못하면서 만들어두었던 코드들과 선배님들이 만든 프로그램의 소스까지 이해가 되고, 어떻게 수정하고 업그레이드 시킬지가 보였습니다. 포기하지 않고 하다보면 어느순간 컴퓨터가 어떻게 동작하는지 이해하는 때가 올겁니다^^

 

[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로 #이미지맥스 #심플핫키 #오토클리커 #UiPath #Brity #스푸퍼 #DKOM #모바일게임매크로 #다클라매크로 #다계정매크로 #인스타그램매크로 #짜맥매크로 #챗굴매크로

반응형

댓글