시계

MBR의 초허접강좌~

이번 강좌에서는 Gui 명령어를 사용해서 윈도우를 만들어 보겠습니다.
AHK에는 강력한 HotKey기능도 있지만 다른 재미있는 기능들도 많이 포함되어 있습니다.
물론 윈도우를 만드는 데는 비쥬얼베이직등이 훨씬 효율적이겠지만, AHK로도 불가능한 건 아니라구요~

예제를 따라하시면, 반투명의 시계를 화면위에 항상 표시되게 하실 수 있으실 거에요.

AHK도움말의 GUI, MsgBox, InputBox & Other Dialogs 항목을 참고해 주세요.
참고로 이 강좌는 XP이상의 OS 기준입니다.


;예제 1
FormatTime, time, , h:mm:ss tt
Gui, +AlwaysOnTop
Gui, Font, s40 Norm
Gui, Add, Text, vMyText center,%time%
Gui, Show, center
SetTimer, timechange, 100
return

timechange:
FormatTime, time, , h:mm:ss tt
GuiControl,, MyText,%time%
return


우선 실행시켜 보시면 화면 가운데 썰렁한 윈도우에 시계가 표시됩니다.
스크립트를 살펴보면

FormatTime, time, , h:mm:ss tt
;현재 시간을 변수 time에 시간:분:초 오전/오후 의 형식으로 저장하시오.
Gui, +AlwaysOnTop
;만들어질 윈도우를 항상 다른 창 위에 보이도록 설정.
Gui, Font, s40 Norm
;만들어질 윈도우의 텍스트 폰트 설정. 크기 40, 다른 속성은 기본값으로.
Gui, Add, Text, vMyText center,%time%
;만들어질 윈도우에 변수 time의 내용을 창의 중앙에 텍스트(center)로 표시.
;그리고 이 텍스트 콘트롤의 이름을 MyText로 지정.
Gui, Show, center
;위에서 속성과 내용을 결정한 윈도우를 화면의 중앙에 표시.
SetTimer, timechange, 100
;서브루틴 timechange를 0.1초마다 호출.
return
;메인루틴의 끝.

timechange:
;서브루틴 timechange의 시작
FormatTime, newtime, , h:mm:ss tt ;메인루틴과 똑같은 내용입니다.
GuiControl,, MyText,%newtime%
;메인에서 지정해 놓은 MyText 콘트롤(시간이 표시되어있는 텍스트)의 내요을 새로운 시간으로 변경.
return
;서브루틴의 끝


우선, 시계는 만들었는데 아무리 봐도 쓸모없는 시계...
이런 시계라면 차라리 시스템트레이의 시계보다도 못한..,
이제 여기다가 살짝 마술을 걸어보자구요.

;예제 2
FormatTime, time, , h:mm:ss tt
Gui, +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui, Color, EEAA99
Gui, Font, s40 Norm
Gui, Add, Text, vMyText center cSilver,%time%
WinSet, TransColor, EEAA99 150
Gui, Show, center NoActivate
SetTimer, timechange, 100
return

timechange:
FormatTime, newtime, , h:mm:ss tt
GuiControl,, MyText,%newtime%
return

실행시켜 보셨습니까?
시계가 조금 신기해졌죠~

화면위에 항상 떠있는 반투명의 시계가 나타났습니다.
시계 밑에 있는 다른 윈도우의 내용을 보거나, 클릭하는데 방해도 되지 않는 반투명 시계^^

도움말의 Window Management - WinSet명령어를 참고하세요.

FormatTime, time, , h:mm:ss tt ; 예제 1과 동일
Gui, +LastFound +AlwaysOnTop -Caption +ToolWindow
;옵션 +LastFound는 아래의 WinSet명령어가 지금 만드는 윈도우에 영향을 주도록 설정.
;옵션 -Caption +ToolWindow 윈도우를 투명하게 만들때 타이틀바 등의 콘트롤을 치워 보이도록...
Gui, Color, EEAA99
;윈도우의 색깔을 EEAA99로 설정. 꼭 EEAA99이어야만 하는 건 아닙니다. 그냥 도움말에 나온 값을 복사해서 붙이다보니까;;;
Gui, Font, s40 Norm ; 예제 1과 동일
Gui, Add, Text, vMyText center cSilver,%time%
;나머지 내용은 동일. 글자색을 은색으로 설정. (여러 색깔을 선택해 봤는데 은색이 제일 무난하더군요.)
WinSet, TransColor, EEAA99 150
;도움말 항목 WinSet을 참고해주세요. 특정 윈도우에서 선택된 색깔을 투명하게 만들어 줍니다.
;숫자는 0-255 사이의 값. 숫자가 작을수록 글자가 더 투명해집니다.
Gui, Show, center ; 예제 1과 동일
SetTimer, timechange, 100 ; 예제 1과 동일
return

timechange:
FormatTime, newtime, , h:mm:ss tt ; 예제 1과 동일
GuiControl,, MyText,%newtime% ; 예제 1과 동일
return

이제는 조금 쓸모있어 보이죠~
마지막으로 조금만 더 손을 봅시다.

;예제 3
#SingleInstance force
Menu, Tray, Icon ,%A_WinDir%\system32\SHELL32.dll,14, 1
menu, tray, NoStandard
menu, tray, DeleteAll
Menu, tray, add,Exit
Menu, tray, Tip, Alarm Clock`n by ImMBR
FormatTime, time, , h:mm:ss tt
Gui, +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui, Color, EEAA99
Gui, Font, s40 Norm
Gui, Add, Text, vMyText center cSilver,%time%
WinSet, TransColor, EEAA99 150
Gui, Show, center NoActivate
SetTimer, timechange, 100
return

timechange:
FormatTime, newtime,, h:mm:ss tt
GuiControl,, MyText,%newtime%
return

Exit:
exitapp

메뉴를 좀 손보고, 아이콘을 바꿔 봤습니다.
이제 시스템트레이에 H자 아이콘 대신 지구 아이콘이 나오고,
트레이팁도 만들었고, 트레이아이콘 우클릭시 나오는 메뉴도 변경했습니다.


#SingleInstance force
;이 스크립트의 중복실행을 금지시킴.
Menu, Tray, Icon ,%A_WinDir%\system32\SHELL32.dll,14, 1
;시스템트레이의 썰렁한 H자 아이콘을 지구 모양으로 바꿈.
;이 라인은 OS 특성을 탈 수 있으므로 문제 발생시 삭제.
menu, tray, NoStandard
menu, tray, DeleteAll
;시스템트레이 아이콘 우클릭시 나오는 메뉴를 모두 삭제.
Menu, tray, add,Exit
;메뉴에 Exit 추가.
Menu, tray, Tip, Alarm Clock`n by ImMBR
;시스템트레이 아이콘에 마우스를 올리면 나오는 TrayTip 내용 설정
FormatTime, time, , h:mm:ss tt ; 예제 2와 동일
Gui, +LastFound +AlwaysOnTop -Caption +ToolWindow ; 예제 2와 동일
Gui, Color, EEAA99 ; 예제 2와 동일
Gui, Font, s40 Norm ; 예제 2와 동일
Gui, Add, Text, vMyText center cSilver,%time% ; 예제 2와 동일
WinSet, TransColor, EEAA99 150 ; 예제 2와 동일
Gui, Show, center ; 예제 2와 동일
SetTimer, timechange, 100 ; 예제 2와 동일
return

timechange:
FormatTime, newtime,, h:mm:ss tt ; 예제 2와 동일
GuiControl,, MyText,%newtime% ; 예제 2와 동일
return

Exit:
exitapp



언젠지 모를 다음 강좌에서는 예제 3에서 만들어진 시계에 알람기능, 음성 시보 기능(여유님이 스크립트 공유에 올려주신 걸 응용해서), 그리고 세계시간 기능 정도만 추가해주면 훨씬 쓸모있는 스크립트가 될 듯 합니다.
물론 MBR의 게으름은 상상을 초월하는 관계로 언제 다음 강좌를 올릴 수 있을지는...쿨럭...

자동로그인 강좌도 한번 올려야겠다는 생각만 하고 있습니다.

지금까지 허접한 내용 참고 읽어주셔서 감사드립니다^^

'Study > AutoHotKey' 카테고리의 다른 글

한영 전환키 check  (0) 2011.10.18
Script> 좌표/색 도우미  (2) 2011.10.17
AHK 자주사용하는 명령어  (0) 2011.10.17
내장변수  (0) 2011.10.10
키보드 스캔코드  (0) 2011.10.10
Gui는 어렵다?  (0) 2011.10.09
정규 표현식 설명(예제포함)  (0) 2011.10.09
정규 표현식  (0) 2011.10.09
핑테스트 하는것  (0) 2011.10.09
AutoHotKey  (0) 2011.10.09