61 - [오토핫키] Progress와 GUI Progress

    GUI ActiveX, WinHttp, DOM 중에 DOM의 단점이 바로 속도 였죠? 이럴때는 Progress를 사용하여 기다리는 지루함을 줄여주면 좋답니다. Progress는 쉽게 말해 "로딩바"라고 생각하면 됩니다. 마찬가지로 GUI Progress가 있는데 조금더 자유롭게 꾸며줄 수 있어서 저는 GUI Progress를 더 좋아해요.

     

     

    문법

    Progress, Off

    Progress, ProgressParam1 [, SubText, MainText, WinTitle, FontName]

     

    설명

    ProgressParam1

    Off를 기입하면 창이 닫히며, 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

    창의 제목.

    FontName

    MainText와 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 : 수직으로 사용합니다.

     

     

    예제

    Progress

    Progress, 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 Progress

    Gui, -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바를 강제로 입력해줘야 하는 불편함이 있습니다.

     

     

     

     

     

     

    Posted by 옹봉이