스톱워치 만들기
이번에는 오토핫키로 스톱워치를 만들어 보겠습니다
딱히 쓰려고 만든다기 보다는 앞서 포스팅한 글중에 원도우종료타이머가 있는데요
타이머를 거꾸로 바꾸면 스톱워치가 되지 않을까 싶기도 하고, 나중에 필요할때가 있을 수도 있어서 만들어 보게 됬습니다
그럼 천천히 누구나 할수 있으니 스톱워치를 만들러 가봅시다
우선 오토핫키 입문자 분께서는 아래 링크 오토핫키 설치 하고 오세요!!!!!!
[오토핫키]AutoHotkey.오토핫키 설치하고, 초보프로그램 만들기
주로 게임에 많이 사용하기로 유명한 매크로 오토핫키로 많이 알려져 있다 레드도 처음 던파의 x키 연타버튼을 혹은 디아블로 반오토, 아이템줍기 등등으로 많이 사용 했던 시절이 있습니다
스톱워치 구성 미리보기
제일 위에 타이머가 올라갈 텍스트가 있고, 바로 아래 시작 버튼이 있습니다
인터페이스틑 스톱워치 답게 단순함 그대로 초보 누구나 쉽게 배치 할 수 있는 구조 입니다
하지만 여기에 시작 버튼을 누르면, 일시정지 버튼이나, 정지버튼이 숨어 있습니다
스톱워치 코딩소스
Gui, Font, S25 Bold cRed
Gui, Add, Text, x35 y25 vCount, 00:00:00:00
Gui, Add, Button, x10 y75 w150 h60 gTimeStop vTimeStop, 일시정지
Gui, Add, Button, x10 yp w150 hp gReStart vReStart, 재시작
Gui, Add, Button, x160 yp w90 hp gStop vStop, 종료
Gui, Add, Button, x10 y75 w240 hp gTimeStart vTimeStart, 시작
Gui, Show, w260 h185, 스톱워치
GuiControl, Hide, Stop
GuiControl, Hide, TimeStop
GuiControl, Hide, ReStart
return
TimeStart:
Hour = 00
Min = 00
Sec = 00
Sec2 = 00
GuiControl, Hide, TimeStart
GuiControl, Show, Stop
GuiControl, Show, TimeStop
Loop{
If(Sec2<62){
Sec2++
GuiControl, , Count, %Hour%:%Min%:%Sec%:%Sec1%
Sleep, 1
}Else If (Sec<59){
Sec++
Sec2=00
}Else If (Min<59){
Min++
Sec=00
}Else If (Hour<100){
Hour++
Min=00
}
}
return
TimeStop:
GuiControl, Hide, TimeStop
GuiControl, Show, ReStart
Pause
return
ReStart:
GuiControl, Hide, ReStart
GuiControl, Show, TimeStop
Pause, off
return
Stop:
Reload
return
GuiClose:
ExitApp
return
스톱워치 코딩이해
Gui, Font, S25 Bold cRred
Gui, Add, Text, x35 y25 vCount, 00:00:00:00
Gui, Add, Button, x10 y75 w150 h60 gTimeStop vTimeStop, 일시정지
Gui, Add, Button, x10 yp w150 hp gReStart vReStart, 재시작
Gui, Add, Button, x160 yp w90 hp gStop vStop, 종료
Gui, Add, Button, x10 y75 w240 hp gTimeStart vTimeStart, 시작
Gui, font
Gui, Show, w260 h185, 스톱워치
->여기까지는 화면 인터페이지 구성에 필요한 텍스트나 버튼을 생성하고, 배치 하는 코드 입니다
GuiControl, Hide, Stop
GuiControl, Hide, TimeStop
GuiControl, Hide, ReStart
->일시정지, 재시작, 종료 버튼을 미리 숨겨 놓는 코드 입니다
TimeStart:
Hour = 00
Min = 00
Sec = 00
Sec2 = 00
->시작을 누르면 시간, 분, 초, 마이크로초를 모두 변수 선언을 하고 00으로 셋팅을 해줍니다
GuiControl, Hide, TimeStart
GuiControl, Show, Stop
GuiControl, Show, TimeStop
->스톱워치를 시작을 하면 시작버튼은 숨기고, 일시정지와 종료 버튼이 나옵니다
Loop{
If(Sec2<62){
Sec2++
GuiControl, , Count, %Hour%:%Min%:%Sec%:%Sec1%
Sleep, 1
}Else If (Sec<59){
Sec++
Sec2=00
}Else If (Min<59){
Min++
Sec=00
}Else If (Hour<100){
Hour++
Min=00
}
}
->이제 본격적으로 스톱워치 타이머가 올라가는 부분입니다
->앞서 포스팅한 윈도우종료타이머 반대라고 보면됩니다
->여기서 Sec<59로 잡은것은 58은 59보다 작기때문에 실행이되면 59까지 올라가고, 59는 59보다 작지 않기때문에 다음으로 넘어가게 되는 것이죠,, 즉 59까지 화면에 표기가 되고 60은 표기되지 않고, 00으로 되는 것입니다
->Sec2<62는 마이크로세크를 Sec2라고 변수를 잡았고, 계속 테스트 해본결과 60으로 잡으면 시간이 점점 빨라지더라구요,, 그래서 맞추다 보니 62까지 가게 되었는데,, 여러분도 테스트해보고 설정하시면 됩니다
->굳이 필요없다 싶은 분들은 Sleep를 1000으로 바꾸고 초, 분, 시간만 사용해도 됩니다
TimeStop:
GuiControl, Hide, TimeStop
GuiControl, Show, ReStart
Pause
->일시정지는 재시작버튼은 표시하고 일시정지버튼은 숨기고 Pause 명령어가 들어가서 멈추게 했습니다
ReStart:
GuiControl, Hide, ReStart
GuiControl, Show, TimeStop
Pause, off
->재시작은 일시정지 버튼은 표시하고, 재시작 버튼은 숨기고 Pause를 off 푸시를 꺼라 종료해라 즉 프로그램을 다시 시작합니다
Stop:
Reload
->정지버튼은 리로드를 사용해서 프로그램 자체를 재시작하게 했습니다
->시간만 00으로 초기화하고 버튼도 시작버튼만 나오게 하려 했는데요,,뭐가 잘못 된건지 시작버튼이 먹통이어서 단순하게 리셋으로 해버렸습니다
파일은 다운받아 사용하시면 됩니다
스톱워치 마무리
한가지 만들면서 해결 못한 부분은 숫자가 처음에는 00 두자릿수로 되지만 타임이 한자릿 수가 되면 앞에 0이 붙어서 07이 되야 하는데,, 이부분 구글링을 해서 추가 명령어를 넣어서 해결해 보려 했지만, 해결을 못했네요
그리고 포스팅 쓰면서 알게된 버그가 창을 드레그하면 시간이 드레그하는 동안 멈췄다가 가네요^^
추후 해결책을 찾으면, 추가 제작해서 포스팅하는 시간을 가져보겠습니다
아래 r2d를 클릭하면, r2d 티스토리 사이트로 연결 됩니다.
누구나 만들수 있고 자기가 만들어서 자기가 사용하는 프로그램을 마니마니 업데이트 하려고 합니다
언제든지 마니마니 들려주세요
그럼 모두 즐거운 하루 되세요~!~