InternetSetOption インターネットのオプション情報の設定

Cの宣言:

BOOL InernetSetOption(
	IN HINTERNET hInternet OPTIONAL,
	IN DWORD Option,
	IN LPVOID Buf,
	IN DWORD BufSize);

説明:

hInternetで指定されたインターネットのオプション情報を設定する。

引数の意味は通り。
hInternet 設定先のインターネットのハンドル。
Option 設定する情報の種別。後述の表を参照。
Buf 設定する情報。
BufSize Bufのサイズ。

Optionに設定可能な値は、以下の通り。
INTERNET_OPTION_CALLBACK コールバック関数のアドレスを設定する。
INTERNET_OPTION_CONNECT_TIMEOUT インターネットへの接続のタイムアウト時間を設定する。
INTERNET_OPTION_CONNECT_RETRIES インターネットへの接続のリトライ回数。
INTERNET_OPTION_CONNECT_BACKOFF リトライ時の待機時間。
INTERNET_OPTION_CONTROL_SEND_TIMEOUT 非データの送信要求のタイムアウト時間。現バージョンではFTPのみ有功。
INTERNET_OPTION_CONTROL_RECIEVE_TIMEOUT 非データの受信要求のタイムアウト時間。現バージョンではFTPのみ有効。
INTERNET_OPTION_DATA_SEND_TIMEOUT データの送信要求のタイムアウト時間。
INTERNET_OPTION_DAtA_RECIEVE_TIMEOUT データの受信要求のタイムアウト時間。
INTERNET_OPTION_ASYNC_PRIORITY 非同期ダウンロード時の優先度。現バージョンでは未実装。
INTERNET_OPTION_CONTEXT_VALUE hInternetに関連付けられたContextの値。現バージョンでは、Bufが指している領域にポインタが格納されていると解釈し、そのポインタの指す領域へ値を返す。IE4.0以降では新しいマクロ値を割り当て、動作が修正される予定。
INTERNET_OPTION_REFRESH レジストリから情報を再読み込み可能かどうか。
INTERNET_OPTION_PROXY プロクシ情報を表すINTERNET_PROXY_INFO構造体。
INTERNET_OPTION_USER_AGENT エージェント名。
INTERNET_OPTION_USERNAME ユーザ名。
INTERNET_OPTION_PASSWORD パスワード。
INTERNET_READ_BUFFER_SIZE 読み込みバッファ長。
INTERNET_WRITE_BUFFER_SIZE FtpPutFileなどで使用される書き込みバッファ長。
INTERNET_OPTION_WRITE_DATA データ書き込み時に使用されるバッファのサイズ。

戻り値は、関数の実行に成功したか否かを表す真偽値である。

Cのサンプル:

各種タイムアウト時間を1秒に設定する。
void TestInternetOption()
{
	HINTERNET hInternet;
	HINTERNET hFile;
	char Buf[1000];
	DWORD ReadSize;
	BOOL bResult;
	DWORD ms;

	hInternet = InternetOpen(
		"WININET Sample Program",
		INTERNET_OPEN_TYPE_PRECONFIG,
		NULL,
		NULL,
		0);
	
	if(hInternet == NULL) printf("InternetOpen err(%d)\n", GetLastError());
	else printf("InternetOpen succeed.\n");

	ms = 1000;
	InternetSetOption(hInternet, INTERNET_OPTION_CONNECT_TIMEOUT, &ms, sizeof(ms));
	InternetSetOption(hInternet, INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT, &ms, sizeof(ms));
	InternetSetOption(hInternet, INTERNET_OPTION_CONTROL_SEND_TIMEOUT, &ms, sizeof(ms));
	InternetSetOption(hInternet, INTERNET_OPTION_DATA_SEND_TIMEOUT, &ms, sizeof(ms));
	InternetSetOption(hInternet, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &ms, sizeof(ms));

	if(!bResult) printf("InternetSetOption err(%d)\n", GetLastError());
	else printf("InternetSetOption succeed.\n");

	hFile = InternetOpenUrl(
		hInternet,
		"http://www.geocities.co.jp/SiliconValley-PaloAlto/5920/other.html",
		NULL,
		0,
		INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_RELOAD,
		0);

	if(hFile == NULL) printf("InternetOpenUrl err(%d).\n", GetLastError());
	else printf("InternetOpenUrl succeed.\n");

	for(;;) {
		ReadSize = 1000;

		bResult = InternetReadFile(
			hFile,
			Buf,
			1000,
			&ReadSize);

		if(!bResult) {
			printf("err(%d)\n", GetLastError());
			break;
		}

		if(bResult && (ReadSize == 0)) break;

		Buf[ReadSize] = '\0';
		printf("%s", Buf);
	}

	InternetCloseHandle(hFile);
	InternetCloseHandle(hInternet);
}

(original text:1999/04/22 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。