检索默认的互联网超时值?
Retrieve default internet timeout values?
我正在尝试检索 INTERNET_OPTION_SEND_TIMEOUT
、INTERNET_OPTION_SEND_TIMEOUT
和 INTERNET_OPTION_RECEIVE_TIMEOUT
选项标志的默认值。
根据我的阅读,它们在 WinInit 中。
以下代码无法通过 Types of actual and formal var parameters must be identical
编译,
但是这里哪个参数不正确?
procedure TFrmWininetTimeOuts.FormShow(Sender: TObject);
var
hSession : HINTERNET;
dwTimeOut : DWORD;
begin
hSession := InternetOpen('usersession', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if not Assigned(hSession) then Exit;
try
InternetQueryOption(hSession, INTERNET_OPTION_RECEIVE_TIMEOUT, @dwTimeOut, SizeOf(dwTimeOut));
finally
InternetCloseHandle(hSession);
end;
end;
代码完成说它需要一个 (pointer,cardinal,pointer,cardinal)。
我看到调用 InternetQueryOption(nil,
(也无法编译)或中间 InternetOpenUrl
的代码示例,但我想我不需要那个。
正如您通过查看 WinInet.pas 中的声明所见,InternetQueryOption
的最终参数是一个 var
参数:
function InternetQueryOption(hInet: HINTERNET; dwOption: DWORD;
lpBuffer: Pointer; var lpdwBufferLength: DWORD): BOOL; stdcall;
该函数接收缓冲区的长度,但也会告诉您它向您的缓冲区写入了多少字节,因此您传入该参数的值需要是可修改的。常量 SizeOf(dwTimeOut)
不可修改。
将值存储在变量中,然后在该参数中传递变量。还要确保检查 API 函数的 return 值。它不会在出错时抛出异常;它将 return False
.
var
BufferSize: DWord;
BufferSize := SizeOf(dwTimeOut);
Win32Check(InternetQueryOption(hSession, INTERNET_OPTION_RECEIVE_TIMEOUT,
@dwTimeOut, BufferSize));
我正在尝试检索 INTERNET_OPTION_SEND_TIMEOUT
、INTERNET_OPTION_SEND_TIMEOUT
和 INTERNET_OPTION_RECEIVE_TIMEOUT
选项标志的默认值。
根据我的阅读,它们在 WinInit 中。
以下代码无法通过 Types of actual and formal var parameters must be identical
编译,
但是这里哪个参数不正确?
procedure TFrmWininetTimeOuts.FormShow(Sender: TObject);
var
hSession : HINTERNET;
dwTimeOut : DWORD;
begin
hSession := InternetOpen('usersession', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if not Assigned(hSession) then Exit;
try
InternetQueryOption(hSession, INTERNET_OPTION_RECEIVE_TIMEOUT, @dwTimeOut, SizeOf(dwTimeOut));
finally
InternetCloseHandle(hSession);
end;
end;
代码完成说它需要一个 (pointer,cardinal,pointer,cardinal)。
我看到调用 InternetQueryOption(nil,
(也无法编译)或中间 InternetOpenUrl
的代码示例,但我想我不需要那个。
正如您通过查看 WinInet.pas 中的声明所见,InternetQueryOption
的最终参数是一个 var
参数:
function InternetQueryOption(hInet: HINTERNET; dwOption: DWORD;
lpBuffer: Pointer; var lpdwBufferLength: DWORD): BOOL; stdcall;
该函数接收缓冲区的长度,但也会告诉您它向您的缓冲区写入了多少字节,因此您传入该参数的值需要是可修改的。常量 SizeOf(dwTimeOut)
不可修改。
将值存储在变量中,然后在该参数中传递变量。还要确保检查 API 函数的 return 值。它不会在出错时抛出异常;它将 return False
.
var
BufferSize: DWord;
BufferSize := SizeOf(dwTimeOut);
Win32Check(InternetQueryOption(hSession, INTERNET_OPTION_RECEIVE_TIMEOUT,
@dwTimeOut, BufferSize));