61 - [오토핫키] Progress와 GUI Progress
61 - [오토핫키] Progress와 GUI Progress
GUI ActiveX, WinHttp, DOM 중에 DOM의 단점이 바로 속도 였죠? 이럴때는 Progress를 사용하여 기다리는 지루함을 줄여주면 좋답니다. Progress는 쉽게 말해 "로딩바"라고 생각하면 됩니다. 마찬가지로 GUI Progress가 있는데 조금더 자유롭게 꾸며줄 수 있어서 저는 GUI Progress를 더 좋아해요. |
|
|
문법
Progress, Off Progress, ProgressParam1 [, SubText, MainText, WinTitle, FontName] |
설명
ProgressParam1Off를 기입하면 창이 닫히며, Show를 기입하면 숨어있는 창이 보여집니다. 만약 창이 없다면 새로운 프로그레스 창이 생성됩니다. 옵션을 조합하여 사용합니다. A : 창이 항상 위에 있지 않습니다. B : Borderless, 창의 테두리와 제목 바가 없습니다. M : 사용자가 창을 이동할 수 있게됩니다. Pn : 기본값은 0이며 프로그레스 창의 값을 관리합니다. Rx-y : 프로그레스 범위를 지정합니다. 기본값은 R0-100 입니다. T : 태스크 바에 버튼이 추가됩니다. Hn : n에 창의 높이를 지정합니다. Wn : n에 창의 너비를 지정합니다. Xn : n에 창의 x좌표를 지정합니다. Yn : n에 창의 y좌표를 지정합니다. Hide : 창을 감춥니다. |
SubText바 아래 표시할 텍스트. |
MainText바 위에 표시할 텍스트. |
WinTitle창의 제목. |
FontNameMainText와 SubText에 사용할 글꼴. |
Gui, Add, Progress, Options |
설명
Add콘트롤을 GUI에 추가합니다. |
Progress얼마나 진도가 나갔는가를 보여주는 컬러 바. |
Options위치, 크기, 라벨 등을 설정 W : 픽셀 단위 너비 H : 픽셀 단위 높이 X : X축 위치 Y : Y축 위치 Cn : 바의 컬러 n에 10진 혹은 16진 컬러값을 입력 합니다. BackgroundN : 바의 배경색 N에 10진 혹은 16진 컬러값을 입력 합니다. Range : 범위. 기본값은 Range0-100 -Smooth : 부드럽게 연속된 바가 아닌 Progress와 같은 테마 프로그레스를 보여줍니다. Vertical : 수직으로 사용합니다. |
예제
ProgressProgress, P100 B ;Borderless 프로그레스를 100까지 이동시킵니다. LimitTime=20180101 WB := ComObjCreate( "InternetExplorer.Application" ) WB.navigate( "http://time.navyism.com/" ) While WB.readyState <> 4 || WB.document.readyState != "complete" || WB.busy Sleep, 100 Today := WB.document.getElementById( "time_area" ).innerText Today := SubStr(RegExReplace(Today, "[^\d]"), 1, 8) Progress, Off ;프로그레스창을 닫습니다. If Today > %LimitTime% { MsgBox, 16, 기간만료, 사용기간이 만료되었습니다. ExitApp }Else{ EnvSub, LimitTime, %Today%, days MsgBox, 64, 사용가능기간, 사용기간 %LimitTime%일 남았습니다. } |
GUI ProgressGui, -Caption +AlwaysOnTop +LastFound Gui, Add, Text, , L o a d i n g . . . Gui, Add, Progress, cRed vMyProgress ;GUI Progress를 추가합니다. WinSet, TransColor, F0F0F0 ;배경색을 투명하게 해줍니다. Gui, Show
WB := ComObjCreate( "InternetExplorer.Application" ) WB.navigate( "https://nid.naver.com/nidlogin.login" ) GuiControl, , MyProgress, +30 ;GUI Progress바를 30 이동시킵니다. While WB.readyState <> 4 || WB.document.readyState != "complete" || WB.busy Sleep, 100 GuiControl, , MyProgress, +40 ;GUI Progress바를 40 이동시킵니다. WB.document.getElementById( "id" ).value := "아이디" WB.document.getElementById( "pw" ).value := "비밀번호" WB.document.getElementById( "frmNIDLogin" ).submit() GuiControl, , MyProgress, +30 ;GUI Progress바를 30 이동시킵니다. WB.Visible := true
Gui, Hide ;GUI를 숨깁니다. |
Progress는 사용하기 간편하지만 모양을 더이상 꾸밀수가 없습니다. 반면 GUI Progress는 다양한 설정이 가능하지만 부드럽게 하기 위해서는 스크립트 중간중간 GuiControl을 통해서 Progress바를 강제로 입력해줘야 하는 불편함이 있습니다. |