Я пытаюсь заставить Wininet игнорировать режим «Работа в автономном режиме» Internet Explorer как для HTTP, так и для FTP.
Так что я пытаюсь использовать 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()
всегда возвращает ноль, если вы находитесь в режиме «Работа в автономном режиме» и используете 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);