Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Установить или получить статус Off-Line

Delphi , Интернет и Сети , Интернет

Установить или получить статус Off-Line

Ребенок спрашивает маму:
- Мамочка! А почему мой папа не делает мне козу и не шлепает по попке?
- Потому что нет у тебя больше папки, - рыдая, сказала мама. - Он купил себе модем и подключился к Интернету!


{ 
  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) then 
    if (State and INTERNET_STATE_DISCONNECTED_BY_USER) <> 0 then 
      Result := True; 
end; 


//Set offline state 

procedure SetGlobalOffline(fGoOffline: Boolean); 
var 
  ci: INTERNET_CONNECTED_INFO; 
begin 
  if fGoOffline then 
  begin 
    ci.dwConnectedState := INTERNET_STATE_DISCONNECTED_BY_USER; 
    ci.dwFlags          := ISO_FORCE_DISCONNECTED; 
  end 
  else 
    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 и определяет две процедуры:

  1. IsGlobalOffline: Функция не принимает параметров и возвращает булевое значение, указывающее, находится ли система в состоянии отключения.
    • Она инициализирует Result в False, а затем запросит опцию INTERNET_OPTION_CONNECTED_STATE с помощью InternetQueryOption. Если результат указывает на то, что система была отключена пользователем, она установит Result в True.
  2. SetGlobalOffline: Процедура принимает булевый параметр fGoOffline и устанавливает глобальное состояние отключения соответственно.
    • Она создает экземпляр типа INTERNET_CONNECTED_INFO (неопределенный тип данных) и инициализирует его члены в зависимости от значения fGoOffline.
    • Если fGoOffline равен True, она устанавливает состояние подключения в отключенное с флагом силы отключения. В противном случае она устанавливает состояние обратно в подключенное.
    • Затем она использует InternetSetOption для обновления глобального состояния отключения.

Альтернативное решение:

Если вам нужно проверять или изменять состояние отключения программно в более современной форме, вы можете рассмотреть использование функций Windows API GetNetworkConnectivity и SetNetworkConnectivity из заголовочного файла wininet.h. Эти функции предоставляют более гибкий способ управления сетевым подключением и могут быть более подходящими для вашего конкретного требования. Вот пример использования этих функций:

// Проверка, находится ли система в онлайн-режиме
function IsSystemOnline: Boolean;
var
  Connectivity: WININET_CONNECTIVITY;
begin
  Result := GetNetworkConnectivity(nil, Connectivity) = S_OK and (Connectivity >= WININET_ONLINE);
end;

// Установка системы в режим отключения
procedure SetSystemOffline;
begin
  SetNetworkConnectivity(nil, WININET_DISCONNECTED);
end;

// Установка системы в режим онлайн
procedure SetSystemOnline;
begin
  SetNetworkConnectivity(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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Интернет ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:15:20/0.0057868957519531/1