HTTP と FTP の両方で、Wininet に Internet Explorer の「オフライン作業」モードを無視させようとしています。
だから私はで使用しようとしてInternetSetOption()いますINTERNET_OPTION_IGNORE_OFFLINE。ドキュメントには、「これは、リクエスト ハンドルによってInternetQueryOption、およびInternetSetOptionリクエスト ハンドルとともに使用される」と記載されています。ただし、IE がオフライン作業モードの場合InternetConnect()は常に null ハンドルが返されるため、要求ハンドルを取得することはできません。接続ハンドルがないと、要求ハンドルを取得できません。InternetOpen()ということで、ハンドルとハンドルで使ってみましたNULL。どちらも で失敗しましERROR_INTERNET_INCORRECT_HANDLE_TYPEた。
このオプションを機能させる方法はありますか? 2003 年の MS ニュースグループで、INTERNET_OPEN_TYPE_PRECONFIG「壊れた」リファレンスを見つけました。IE8 ベータ 2 で 5 年後、まだ修正されていませんか? それとも私はそれを間違っていますか?
編集
私は完全に正しくありませんでした。 InternetConnect()「オフライン作業」モードで FTP を使用している場合は常に null を返しますが、Http を使用している場合は有効なハンドルを返します。ただし、リクエストハンドルを使用してもまだ機能しません。
「オフラインで作業」に設定されていて、電話をかけた場合
BOOL a = TRUE;
::InternetSetOption(hData, INTERNET_OPTION_IGNORE_OFFLINE, &a, sizeof(BOOL));
からハンドルに
HINTERNET hData = HttpOpenRequest(hInternet, L"POST", path, NULL, NULL, NULL, flags, 0 );
InternetSetOption()呼び出しは成功します。
ただし、HttpSendRequest()オプションを設定しない場合と同様に、への呼び出しはエラー コード 2 (ファイルが見つかりません) で失敗します。
電話しても同じこと
::InternetSetOption(hData, INTERNET_OPTION_IGNORE_OFFLINE, 0, 0);