Я пытаюсь заставить Wininet игнорировать режим «Работа в автономном режиме» Internet Explorer для HTTP и FTP.WinNET's INTERNET_OPTION_IGNORE_OFFLINE не работает?
Так что я пытаюсь использовать InternetSetOption()
с INTERNET_OPTION_IGNORE_OFFLINE
. В документации говорится: «Это используется InternetQueryOption
и InternetSetOption
с дескриптором запроса». Однако вы не можете получить дескриптор запроса, потому что если IE находится в режиме автономной работы, то InternetConnect()
всегда будет возвращать нулевой дескриптор. Без ручки соединения вы не можете получить обработчик запроса. Поэтому я попытался использовать его с ручкой InternetOpen()
и ручкой NULL
. Оба отказались с ERROR_INTERNET_INCORRECT_HANDLE_TYPE
.
Есть ли способ заставить этот параметр работать? Я нашел ссылку на группу новостей MS с 2003 года, что INTERNET_OPEN_TYPE_PRECONFIG
«сломан». 5 лет спустя с IE8 beta 2, и они все еще не исправили его? Или я делаю это неправильно.
Редактировать
Я был не совсем точен. InternetConnect()
всегда возвращает null, если вы находитесь в режиме «Работа в автономном режиме» и используете FTP, но он возвращает действительный дескриптор, если вы используете 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);