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);