오토핫키 로 컴퓨터 종료 예약 관련 해서 만들고있는데요;; 시간 계산하는게 힘들군요
예로 .. 현재시간이 23시 00분이라 하고;; 종료 예약시간이 1시 00 분이라면
이럴경우 저아래 계산 넣은게 안맞지않나요;; ? 맞나? ;;
단순한 산수인것같은데 머리가 뻑뻑하니 징하게 안돌아가네요 ㅋ;
혹 쉽게 계산하는방법아시는분 ㅋ; 이래서 난 산수나 수학이 싫어 ㅠㅠ
Gui, Add, GroupBox, x12 y10 w250 h130 , GroupBox
Gui, Add, Edit, x22 y30 w60 h20 V시간, Edit
Gui, Add, Text, x82 y30 w30 h20 , 시
Gui, Add, Edit, x112 y30 w60 h20 V분, Edit
Gui, Add, Text, x172 y30 w20 h20 , 분
Gui, Add, Button, x192 y30 w60 h40 , 종료예약
Gui, Add, Text, x22 y50 w170 h20 +Center, 종료 예약 을 하겠습니다.
Gui, Add, Button, x192 y70 w60 h40 , 종료취소
; Generated using SmartGUI Creator 4.0
Gui, Show, x355 y184 h154 w273,
f1::
종료예약:
Gui, Submit, Nohide
종료시간설정(시간,분)
return
종료취소:
RunWait,shutdown /a,,Hide
return
종료시간설정(종료시간,종료분)
{
현재시간 := A_Hour * 3600
현재분 := A_Min * 60
예약시간 := 종료시간 * 3600
예약분 := 종료분 * 60
IF (A_hour > 종료시간)
{
예약시간 := (종료시간 + 24) * 3600
}
총시간 := (예약시간 + 예약분) - (현재시간 + 현재분)
RunWait,shutdown -f -s -t %총시간%,,Hide
return
}
코드는 맞게 작성하셨습니다. 그러나 이건 종료시간이 무조건 24시간안에 종료를 할 경우에만 해당하죠.
그리고, 효율성을 위해
IF (A_hour > 종료시간)
예약시간 := (종료시간 + 24) * 3600
else
예약시간 := 종료시간 * 3600
로 바꿔주시는게 2번 계산되지 않습니다.
하지만, 오토핫키에는 날짜(시간)관련 계산 명령어가 있습니다.
envsub, envadd 를 이용하면 년,월,일이 틀려도 간단하게 해결할수 있습니다.
코드는 공부하시길...ㅋ