본문 바로가기

Autohotkey강좌

Autohotkey 21, 윈도우 예약 자동 종료 프로그램(AutoPowerDown)

youtu.be/2YWtmJI2IOw

 

이번 시간에는 윈도우즈PC를 정해진 시간에 종료하도록 하는 프로그램을 만들어 보겠습니다.

우선 윈도우즈PC종료 명령어는 shutdown이라는 명령을 사용합니다. 명령문법은 다음과 같습니다.

shutdown /i /l /s /r /f /t xxx /c "comment" …. 

옵션 항목은 다양하게 있는데 실제로 사용할 옵션은 /s /f /t /c 만 사용할 예정입니다.

/s 는 컴퓨터를 종료하는 옵션입니다.(비교항목으로 /r은 reboot입니다.)

/f 는 실행중인 프로그램을 강제로 종료하는 옵션입니다.

/t xxx 는 xxx초이후에 종료하도록 하는 옵션입니다. xxx는 초단위이므로 시간, 분단위로 입력을 받으면 초로 변환해 줘야 합니다.

/c "comment" 는 종료할 때 원인이나 설명을 보여주는 옵션이며, 최대 512자까지 입력할 수 있습니다. 참고로 /c 옵션을 사용하지 않으면 기본 종료 메시지를 보여주는 창이 뜹니다. 우리는 그 기본 종료 메시지를 보이지 않게 하기 위해서 /c옵션을 사용할 것입니다. 즉 comment항목을 빈칸으로 주면 바로 그 기능이 수행됩니다.
결과적으로 우리가 사용할 명령은 다음과 같습니다. 예를 들어 1분후 종료라고 가정하겠습니다. 

shutdown /s /f /t 60 /c " "

수행할 명령이 위와 같은 상황에서 사용자가 원하는 시간을 입력하도록 하기 위해서 GUI를 구성해야 합니다.

X시간 Y분 Z초 후에 종료하도록 입력하게 하고, 입력된 X, Y, Z항목을 가지고 초로 변환하고 나서 구해진 초를 /t 옵션 항목으로 넣어 주면 되겠습니다.

GUI는 간단하게 다음과 같이 구성해 보겠습니다.

 

종료 예약 시간을 설정하세요는 GUI, TEXT로 입력하고 나머지 입력은 개별적으로 TEXT와 EDIT로 받아 보겠습니다.

Gui, Add, Text, x50 y30 w200 h20, 종료 예약 시간을 설정하세요 ;
Gui, Add, Edit, x30 y65 w20 h20 vhour, 0 ;
Gui, Add, Text, x60 y65 w40 h20, 시간 ;
Gui, Add, Edit, x100 y65 w20 h20 vmin, 10 ;
Gui, Add, Text, x130 y65 w20 h20, 분 ;
Gui, Add, Edit, x160 y65 w20 h20 vsec, 0 ;
Gui, Add, Text, x190 y65 w150 h20, 초 후 종료하도록  ;

다음으로는 설정 버튼을 만듭니다.

Gui, Add, Button, x150 y100 w100 h20, 설정 ;

마지막으로 Title항목은 GUI SHOW명령어에 넣어 주고 창의 WIDTH와 HEIGHT를 옵션으로 넣어 줍니다

Gui, Show, w300 h150 , AutoPowerDown

 

이제 설정버튼이 눌렸을때 동작은 사용자의 입력을 읽어 오고, 입력된 시, 분, 초를 통합된 시간(초)로 변경하기 위해 계산해 주고 나서 그 시간을 /t 옵션으로 넣어 줍니다.

 

Button설정:
{
  Gui, Submit, nohide
  tot :=hour*3600+min*60+sec
  Run, shutdown -f -s -t %tot% -c " "

}

return

이제 esc키가 눌리거나 창이 종료되었을 때 동작을 그냥 종료하지 않고, 기존에 입력한 shutdown기능을 취소하도록 넣어 줍니다.

GUIClose:
Run, shutdown -f
ExitApp

 

ESC::goto GUIClose
return

 

전체 프로그램은 다음에서 다운로드 하면 됩니다.

추가적으로 공부하실 분들은 설정버튼이 눌리고 나서 해당 버튼이 disable되도록 바꿔 보세요.

AutoPowerDown.ahk
0.00MB
AutoPowerDown.exe
1.04MB

숙제 다하신 분들은 정답을 댓글로 달아 주세요.

정답은 아래 파일에 올렸습니다.

AutoPowerDownA.ahk
0.00MB