오토핫키 다운로드 진행바

Posted by 대혀니_
2015. 11. 7. 21:20 PROGRAMING/AutoHotKey

DownloadFile("http://주소", "저장 파일이름")


DownloadFile(UrlToFile, SaveFileAs, Overwrite := True, UseProgressBar := True) {

    ;Check if the file already exists and if we must not overwrite it

      If (!Overwrite && FileExist(SaveFileAs))

          Return

    ;Check if the user wants a progressbar

      If (UseProgressBar) {

          ;Initialize the WinHttpRequest Object

            WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")

          ;Download the headers

            WebRequest.Open("HEAD", UrlToFile)

            WebRequest.Send()

          ;Store the header which holds the file size in a variable:

            FinalSize := WebRequest.GetResponseHeader("Content-Length")

          ;Create the progressbar and the timer

            Progress, H80, , 다운로드 중..., %UrlToFile%

            SetTimer, __UpdateProgressBar, 100

      }

    ;Download the file

      UrlDownloadToFile, %UrlToFile%, %SaveFileAs%

    ;Remove the timer and the progressbar because the download has finished

      If (UseProgressBar) {

          Progress, Off

          SetTimer, __UpdateProgressBar, Off

      }

    Return

 

    ;The label that updates the progressbar

      __UpdateProgressBar:

          ;Get the current filesize and tick

            CurrentSize := FileOpen(SaveFileAs, "r").Length ;FileGetSize wouldn't return reliable results

            CurrentSizeTick := A_TickCount

          ;Calculate the downloadspeed

            Speed := Round((CurrentSize/1024-LastSize/1024)/((CurrentSizeTick-LastSizeTick)/1000)) . " Kb/s"

          ;Save the current filesize and tick for the next time

            LastSizeTick := CurrentSizeTick

            LastSize := FileOpen(SaveFileAs, "r").Length

          ;Calculate percent done

            PercentDone := Round(CurrentSize/FinalSize*100)

          ;Update the ProgressBar

            Progress, %PercentDone%, %PercentDone%`% Done, Downloading...  (%Speed%), Downloading %SaveFileAs% (%PercentDone%`%)

      Return

}