1

Тема: AHK: Проверка скаченного файла

Как проверить полностью ли скачен файл через UrlDownloadToFile?

2 (изменено: Malcev, 2016-01-16 21:40:20)

Re: AHK: Проверка скаченного файла

Можно узнавать размер файла до скачивания и сравнивать его с размером после скачивания.

MsgBox % InternetFileGetSize( "ftp://ftp.winzip.com/testdown/testdown.htm" )
MsgBox % InternetFileGetSize( "http://ahkscript.org/favicon.ico" )
 
InternetFileGetSize( URL ) {
 
  hMod := DllCall( "LoadLibrary", WStr, "wininet.dll" )
 
  hIO  := DllCall( "wininet\InternetOpenW"
                 , WStr, "Microsoft Internet Explorer" 
                 , UInt, 4          ; INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY
                 , Int,  0, Int, 0, UInt, 0 )
 
  hIU  := DllCall( "wininet\InternetOpenUrlW"
                 , UInt, hIO, WStr, URL, Int, 0, Int, 0
                 , UInt, 0x84000000 ; INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD
                 , UInt, 0 )
 
  If ( hIO & hIU ) 
 
   If ( SubStr( URL,1,4 ) = "ftp:" )
   {
      varSetCapacity(huint,4)
      FileSize:=DllCall( "wininet\FtpGetFileSize", UInt,hIU,UInt,&huint,UInt)
      FileSize := FileSize + (NumGet(huint)*(2**32))
   }

   Else  DllCall( "wininet\HttpQueryInfoW"
                , UInt,  hIU
                , UInt,  0x20000005     ; HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER
                , UIntP, FileSize, UIntP,4, Int,0 )


  DllCall( "wininet\InternetCloseHandle", UInt, hIU )
  DllCall( "wininet\InternetCloseHandle", UInt, hIO )
  DllCall( "FreeLibrary", UInt, hMod ) 
  Return FileSize
}

3

Re: AHK: Проверка скаченного файла

а какие варианты есть еще?

4

Re: AHK: Проверка скаченного файла

А чем не устраивает этот?

5

Re: AHK: Проверка скаченного файла

Malcev устраивает, просто хотелось бы побольше примеров, думаю не только мне будет полезно.

6

Re: AHK: Проверка скаченного файла

Наверное MD5 можно как-то посчитать.

7

Re: AHK: Проверка скаченного файла

Malcev, в любом случае спасибо за подсказку.