url = http://www.autohotkey.net/~Lexikos/AutoHotkey_L/AutoHotkey_L_Install.exe
MsgBox, % GetFileSizeFromInternet(url) ; размер в байтах
GetFileSizeFromInternet(url, ProxyName = "", ProxyBypass = "")
{
INTERNET_OPEN_TYPE_DIRECT = 1
INTERNET_OPEN_TYPE_PROXY = 3
AccessType := ProxyName ? INTERNET_OPEN_TYPE_DIRECT : INTERNET_OPEN_TYPE_PROXY
INTERNET_FLAG_RELOAD = 0x80000000
HTTP_QUERY_CONTENT_LENGTH = 5
coding := A_IsUnicode ? "W" : "A"
hModule := DllCall("LoadLibrary", Str, "wininet.dll")
hInternet := DllCall("wininet\InternetOpen" . coding
, Str, ""
, UInt, INTERNET_OPEN_TYPE_DIRECT
, Str, ""
, Str, ""
, UInt, 0)
if !hInternet
{
Error := A_LastError
DllCall("FreeLibrary", UInt, hModule)
Return "Ошибка " . Error
}
hFile := DllCall("wininet\InternetOpenUrl" . coding
, UInt, hInternet
, Str, url
, Str, ""
, UInt, 0
, UInt, INTERNET_FLAG_RELOAD
, UInt, 0)
if !hFile
{
Error := A_LastError
DllCall("wininet\InternetCloseHandle", UInt, hInternet)
DllCall("FreeLibrary", UInt, hModule)
Return "Ошибка " . Error
}
VarSetCapacity(buff, 64)
VarSetCapacity(bufflen, 2)
Loop 4
{
success := DllCall("wininet\HttpQueryInfo" . coding
, UInt, hFile
, UInt, HTTP_QUERY_CONTENT_LENGTH
, UInt, &buff
, UInt, &bufflen
, UInt, 0)
if success
Break
}
Result := success ? StrGet(&buff) : "Невозможно извлечь информацию"
DllCall("wininet\InternetCloseHandle", UInt, hInternet)
DllCall("wininet\InternetCloseHandle", UInt, hFile)
DllCall("FreeLibrary", UInt, hModule)
Return Result
}