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

Определить, есть ли активное соединение с Интернетом 2

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

Определить, есть ли активное соединение с Интернетом 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

 {Dynamic linking. }

 function IsConnectedToInternet(lpdwFlags: LPDWORD): Boolean;
 const
   WininetDLL = 'wininet.dll';
 var
   hWininetDLL: THandle;
   dwReserved: DWORD;
   fn_InternetGetConnectedState: function(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL; stdcall;
 begin
   Result := False;
   dwReserved := 0;
   hWininetDLL := LoadLibrary(WininetDLL);
   if hWininetDLL > 0 then
   begin
     @fn_InternetGetConnectedState := GetProcAddress(hWininetDLL,'InternetGetConnectedState');
     if Assigned(fn_InternetGetConnectedState) then
     begin
       Result := fn_InternetGetConnectedState(lpdwFlags, dwReserved);
     end;
     FreeLibrary(hWininetDLL);
   end else
    raise Exception.Create('Unable to locate function InternetGetConnectedState in library ' + WininetDLL);

 end;

 procedure TForm1.Button1Click(Sender: TObject);
 const
   INTERNET_CONNECTION_MODEM = 1;
   INTERNET_CONNECTION_LAN = 2;
   INTERNET_CONNECTION_PROXY = 4;
   INTERNET_CONNECTION_MODEM_BUSY = 8;
 var
   dwConnectionTypes: DWORD;
 begin
   dwConnectionTypes :=
     INTERNET_CONNECTION_MODEM +
     INTERNET_CONNECTION_LAN +
     INTERNET_CONNECTION_PROXY;
   if IsConnectedToInternet(@dwConnectionTypes) then
     ShowMessage('Connected.')
   else
     ShowMessage('Not Connected.')
 end;

Программа на языке Delphi для проверки подключения к интернету. Она использует библиотеку wininet.dll и функцию InternetGetConnectedState для определения типа соединения.

Функция IsConnectedToInternet принимает указатель на DWORD, который будет использоваться для хранения типа соединения(ов), и возвращает булевое значение, указывающее, является ли система подключенной к интернету или нет.

Программа работает следующим образом:

  1. Она загружает библиотеку wininet.dll.
  2. Если загрузка прошла успешно, она получает адрес функции InternetGetConnectedState с помощью GetProcAddress.
  3. Если адрес функции был получен, она вызывает InternetGetConnectedState с указателем на DWORD и зарезервированным значением (0 в этом случае).
  4. Результат вызова сохраняется в переменной Result.
  5. Если произошла ошибка при загрузке или получении функции, возникает исключение.

Процедура Button1Click вызывается при клике кнопки. Она вызывает функцию IsConnectedToInternet с указателем на DWORD, содержащим типы соединений (MODEM, LAN и PROXY). Если система подключена к любому из этих соединений, она отображает сообщение об ошибке "Connected.". В противном случае, она отображает сообщение об ошибке "Not Connected.".

Типы соединений определены как константы: INTERNET_CONNECTION_MODEM, INTERNET_CONNECTION_LAN, INTERNET_CONNECTION_PROXY и INTERNET_CONNECTION_MODEM_BUSY. Эти константы OR'ed вместе для создания переменной dwConnectionTypes, которая передается функции IsConnectedToInternet.

Программа использует Windows API для проверки интернет-соединения, поэтому она будет работать только на платформах Windows.

Некоторые предложения по улучшению:

  • Вместо использования жестко закодированного списка типов соединений, рассмотрите возможность позволить пользователю настроить, какие типы соединений он хочет проверять.
  • Вы можете добавить более robust ошибку обработки в случае, если функция InternetGetConnectedState fails или возвращает неожиданный результат.
  • Рассмотрите добавление дополнительной функциональности, например, проверка конкретных сетевых интерфейсов (например, Wi-Fi) или тестирование доступа к конкретному URL или серверу.

В целом, это простой и эффективный способ проверки подключения системы к интернету с помощью Delphi.

Определить, есть ли активное соединение с Интернетом в приложении на языке Delphi с помощью функции InternetGetConnectedState из библиотеки wininet.dll.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:44:28/0.0054841041564941/1