I need to decrease default timeout (which is about 30 sec) in executing the followed code
If some idea Pls help,
Thanks...
Code:
Private Const BUF_SIZE As Long = 4096 ' allocation buffer
Private Const INVALID_HANDLE_VALUE As Long = (-1)
Private Const CREATE_ALWAYS As Long = &H2&
Private Const GENERIC_WRITE As Long = &H40000000
Private Const INTERNET_OPEN_TYPE_PRECONFIG As Long = 1
Private Const INTERNET_FLAG_NO_CACHE_WRITE As Long = &H4000000
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Private Const INTERNET_FLAG_RESYNCHRONIZE As Long = &H800&
Private Const HTTP_QUERY_CONTENT_LENGTH As Long = &H5&
Private Const HTTP_QUERY_FLAG_NUMBER As Long = &H20000000
Private Const WININET_API_FLAG_SYNC As Long = &H4&
Private Const INTERNET_OPTION_CONNECT_TIMEOUT As Long = 1 * 1000 '??????
Private Declare Function CreateFileW Lib "Kernel32.dll" (ByVal lpFileName As Long, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function WriteFile Lib "Kernel32.dll" (ByVal hFile As Long, ByVal lpBuffer As Long, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function InternetOpenW Lib "Wininet.dll" (ByVal lpszAgent As Long, ByVal dwAccessType As Long, ByVal lpszProxyName As Long, ByVal lpszProxyBypass As Long, ByVal dwFlags As Long) As Long
Private Declare Function InternetOpenUrlW Lib "Wininet.dll" (ByVal hInternet As Long, ByVal lpszUrl As Long, ByVal lpszHeaders As Long, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetReadFile Lib "Wininet.dll" (ByVal hFile As Long, ByVal lpBuffer As Long, ByVal dwNumberOfBytesToRead As Long, lpdwNumberOfBytesRead As Long) As Long
Private Declare Function InternetCloseHandle Lib "Wininet.dll" (ByVal hInternet As Long) As Long
Private Declare Function HttpQueryInfoW Lib "Wininet.dll" (ByVal hRequest As Long, ByVal dwInfoLevel As Long, ByRef lpvBuffer As Long, ByRef lpdwBufferLength As Long, ByRef lpdwIndex As Long) As Long
'egl1044
Private Function GetContentLength(ByVal url As String) As Long
Dim hInternet As Long
Dim hRequest As Long
Dim dwFileSize As Long
Dim dwLength As Long
Dim dwIndex As Long
dwLength = 4 ' DWORD 32 bit value buffer length.
hInternet = InternetOpenW(0, 1, 0, 0, WININET_API_FLAG_SYNC)
hRequest = InternetOpenUrlW(hInternet, StrPtr(url), 0, 0, 0, 0)
If HttpQueryInfoW(hRequest, HTTP_QUERY_CONTENT_LENGTH Or HTTP_QUERY_FLAG_NUMBER, _
dwFileSize, dwLength, dwIndex) Then
GetContentLength = dwFileSize
Else
GetContentLength = (-1)
End If
InternetCloseHandle hRequest
InternetCloseHandle hInternet
End Function
Thanks...
Last edited: