본문 바로가기

Autohotkey강좌

Autohotkey #39, 매일 일정한 시간에 특정 업무를 진행하기

반응형

https://youtu.be/HSbT7i6Vk64

 

- YouTube

 

www.youtube.com

 

많은 분들이 매일 일정한 시간에 특정한 업무를 진행하는 경우가 많습니다. 만약 특정업무를 autohotkey 또는 다른 매크로를 이용하여 자동화를 해 놓았다면, 자동으로 해당 시간에 실행만 시켜주면 그야말로 모든게 자동화 되는거죠.

그렇게 하려면 어떻게 해야 할까요?

우선 정해진 시간에 동작하도록 SetTimer함수를 사용해야 합니다. 사용법은 다음과 같습니다.

 

Settimer, Myjob, 6000

 

마지막 6000은 milisecond단위이므로 6초간격을 의미하며, Myjob이라는 Label로 이동하여 주어진 업무를 수행합니다.

 

정해진 시간에 동작하는 함수는 알게 되었는데, 내가 원하는 시간을 어떻게 찾아야 할까요? 예를 들어 매일 아침 9:05분에 단순히 메시지박스를 띄워 주도록 하려면 어떻게 해야 할까요? 우선 SetTimer함수를 이용해서 일정한 시간마다 현재 시간을 확인해서 9시 5분인지 확인을 하도록 하면 되지 않을까요? 그렇다면 현재 시간을 알아오려면 어떻게 할까요?

다양한 방법이 있겠지만, FormatTime이라는 함수를 사용하면 됩니다. 

 

Formattime, cur_time,, HHmm

 

cur_time은 현재시간을 저장할 변수명이며, 저장할 시간의 형태는 24시간 단위 시간(시간이 한자리일 경우 0 붙이기)과 분을 연결한 형태입니다. 만약 12시간 단위로 하려면 어떻게 할까요? HHmm대신 hhmm을 사용하면 됩니다.

기타 다른 형태의 시간을 지정하려면 아래 Autohotkey 도움말을 참고하십시요.

https://www.autohotkey.com/docs/commands/FormatTime.htm 

 

현재 시간을 읽어 왔으므로 본인이 정한 시간과 비교해서 동일하면 원하는 작업을 시작하면 됩니다.

 

대략적인 로직은 알았으므로 GUI구성을 해 볼까요?

일단 특정한 시간을 입력할 수 있도록 EDIT창 하나만 만들고 해당 시간을 입력하면 메시지박스를 띄우도록 하겠습니다.

GUI구성은 간단하게 아래처럼 구성했습니다.

 

Gui, Add, Text, x20 y14 w500 h50, 정해진 시간에 할일을 입력합니다. `n동작을 멈추려면 F3키를 누르세요.
Gui, Add, Text, x20 y74 w120 h20, time(hhmm) 
Gui, Add, Edit, x140 y70 w200 h20 vmytime , 1159   
Gui, Add, Button, x390 y70 w100 h20, Start 
Gui, Show, ,Periodic job Ver1.0
return

 

 Start 버튼이 눌리면 진행할 동작은 SetTimer를 설정해 주면 됩니다.

 

ButtonStart:
{
  Settimer, Myjob, 60000
  Gui, hide
}
return 

 

60초에 한번씩 Myjob을 실행하도록 했습니다. 일단 시작하면 GUI창을 감추도록 해 줍니다.

이제 Myjob에서는 현재 시간과 분을 읽어서, 원하는 시간이 되었는지 확인하고 

시간이 맞다면 원하는 작업을 하도록 만듭니다.

 

Myjob:
{
  Gui, Submit, nohide
  Formattime, cur_time,, HHmm
  if ( cur_time = mytime )
  {

    ; 기타 필요한 작업을 여기에 넣어 줍니다.
    Msgbox 정한 시간입니다.
  }
}
return 

 

동작은 다 구성이 되었는데 만약, 해당 동작을 진행하고 싶지 않으면 어떻게 해야 할까요?

Timer동작을 꺼 줘야 합니다. 우리는 이 동작을 F3키에 할당하겠습니다.

 

F3::
{
  Settimer, Myjob, off
  Msgbox 타이머를 종료합니다.
}
return 

 

마지막으로 ESC키를 누르면 해당 프로그램이 종료하도록 하겠습니다.

 

ESC:: ExitApp
return

 

전체 스크립트는 아래에 있습니다.

PeriodicJob.ahk
0.00MB

실행파일은 아래에 있습니다. 원하는 시간을 24시간단위 시간과 분으로 입력하세요.

예를 들어 오후 1시 23분일 경우 1323으로 입력하면 됩니다.

PeriodicJob.exe
1.16MB

원하는 기능을 구현하는데 도움이 되기 바랍니다.

반응형