Ребенок спрашивает маму:
- Мамочка! А почему мой папа не делает мне козу и не шлепает по попке?
- Потому что нет у тебя больше папки, - рыдая, сказала мама. - Он купил себе модем и подключился к Интернету!
{
Users can choose to work offline by selecting Work Offline on the
File menu in Internet Explorer 4.0 and later. When Work Offline is selected,
the system enters a global offline state independent of any current network
connection, and content is read exclusively from the cache.
}uses wininet;
// Get offline state // Alhaiseb Misurata Libya function IsGlobalOffline: Boolean;
var
State, Size: DWORD;
begin
Result := False;
State := 0;
Size := SizeOf(DWORD);
if InternetQueryOption(nil, INTERNET_OPTION_CONNECTED_STATE, @State, Size) thenif (State and INTERNET_STATE_DISCONNECTED_BY_USER) <> 0 then
Result := True;
end;
//Set offline state procedure SetGlobalOffline(fGoOffline: Boolean);
var
ci: INTERNET_CONNECTED_INFO;
beginif fGoOffline thenbegin
ci.dwConnectedState := INTERNET_STATE_DISCONNECTED_BY_USER;
ci.dwFlags := ISO_FORCE_DISCONNECTED;
endelse
ci.dwConnectedState := INTERNET_STATE_CONNECTED;
InternetSetOption(nil, INTERNET_OPTION_CONNECTED_STATE, @ci, SizeOf(ci));
end;
Этот код-набор на Delphi демонстрирует, как проверять и изменять глобальное состояние отключения в Windows с помощью WinINet API.
Функциональность:
Функция IsGlobalOffline проверяет, находится ли система в текущем состоянии отключения. Она делает это, запросив опцию INTERNET_OPTION_CONNECTED_STATE с помощью InternetQueryOption. Если результат указывает на то, что система была отключена пользователем, функция возвращает True, иначе - False.
Процедура SetGlobalOffline устанавливает глобальное состояние отключения в состояние подключенного или отключенного. Если fGoOffline равен True, она устанавливает состояние в отключенное с флагом силы отключения, указывающим, что пользователь намеренно пошел в отключение. В противном случае она устанавливает состояние обратно в подключенное.
Описание кода:
Код использует unit wininet и определяет две процедуры:
IsGlobalOffline: Функция не принимает параметров и возвращает булевое значение, указывающее, находится ли система в состоянии отключения.
Она инициализирует Result в False, а затем запросит опцию INTERNET_OPTION_CONNECTED_STATE с помощью InternetQueryOption. Если результат указывает на то, что система была отключена пользователем, она установит Result в True.
SetGlobalOffline: Процедура принимает булевый параметр fGoOffline и устанавливает глобальное состояние отключения соответственно.
Она создает экземпляр типа INTERNET_CONNECTED_INFO (неопределенный тип данных) и инициализирует его члены в зависимости от значения fGoOffline.
Если fGoOffline равен True, она устанавливает состояние подключения в отключенное с флагом силы отключения. В противном случае она устанавливает состояние обратно в подключенное.
Затем она использует InternetSetOption для обновления глобального состояния отключения.
Альтернативное решение:
Если вам нужно проверять или изменять состояние отключения программно в более современной форме, вы можете рассмотреть использование функций Windows API GetNetworkConnectivity и SetNetworkConnectivity из заголовочного файла wininet.h. Эти функции предоставляют более гибкий способ управления сетевым подключением и могут быть более подходящими для вашего конкретного требования.
Вот пример использования этих функций:
// Проверка, находится ли система в онлайн-режимеfunctionIsSystemOnline:Boolean;varConnectivity:WININET_CONNECTIVITY;beginResult:=GetNetworkConnectivity(nil,Connectivity)=S_OKand(Connectivity>=WININET_ONLINE);end;// Установка системы в режим отключенияprocedureSetSystemOffline;beginSetNetworkConnectivity(nil,WININET_DISCONNECTED);end;// Установка системы в режим онлайнprocedureSetSystemOnline;beginSetNetworkConnectivity(nil,WININET_CONNECTED);end;
Обратите внимание, что эти функции являются частью более recent API и могут требовать дополнительных зависимостей или соображений совместимости. Всегда проверяйте документацию для конкретных требований и ограничений при использовании новых API.
Установить или получить статус Off-Line можно выбрав соответствующее меню "Work Offline" в файловом меню браузера Internet Explorer 4.0 и более поздних версиях или с помощью функций из DLL-библиотеки Wininet.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.