(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Проверка и настройка сетевых подключений в Delphi. Новый API Windows 7.

В целом, тема, заявленная в посте далеко не нова - ответ на вопрос "Как в Delphi узнать, что компьютер подключен к Интернет?" на страничках из прошлого XX века. Но время оно не стоит на месте и программисты различного уровня подготовки предлагают самые различные способы проверки подключения компьютера к Интернет - от небольших листингов в 5-6 строчек кода, до умопомрачительных алгоритмов проверки.

И эти способы, вроде бы работают до сих пор и в Win 7 и в более старых версиях Windows. Расписывать все эти способы. думаю, смысла никого нет. Те кому они нужны - Google в помощь, или сразу вот такая ссылка с результатами запроса к Google.

Я же сегодня покажу ещё один из способов проверки подключения к Интернет, доступный пользователям Win Vista - 7.

Способ этот использует возможности Get Connected Wizard API - API настройки подключения. С помощью него можно, например, вызвать мастера настроек VPN, локальной сетки или, как в нашем случае - проверить подключение к Интернет.

Прежде, чем начнем знакомиться с API, ещё раз подчеркну - работа с API доступна под Windows Vista и выше . В более ранних версиях ОС работа невозможна.

Все экспортируемые функции содержаться в connect.dll .

Начнем с самой простенькой функции - IsInternetConnected

IsInternetConnected

Функция не содержит никаких параметров и, в случае успешного выполнения возвращает S_OK, если пользователь подключен к Интернет и S_FALSE в обратном случае.

Следует отметить, что эта функция только "угадывает" подключение к Интернет для пользователя, используя в работе NCSI и NLM. Хоть результат и носит некоторые вероятностный характер, проверка работы функции на моем компьютере показала удовлетворительный результат - функция не ошиблась ни разу при проверке соединений.

Примечание: очень похожая функция есть и в URL.dll, которая называется IsInetOffline - проводит проверку на "отключенность" от Интернет, но IsInetOffline возвращает false не только, когда комп подключен к Интернету, но и когда ещё не было попыток соединения, что делает использование этой функции очень ненадежным для проверки подключения.

Пример использования функции IsInternetConnected в Delphi:

const
  connect = 'connect.dll';
 
function IsInternetConnected: HRESULT; external connect name 'IsInternetConnected';stdcall;
....
begin
  if IsInternetConnected=S_OK then
    ShowMessage('Подключен к Интернет')
end;

Следующие функции используются для вызова мастеров создания различных подключений и т.к. все они имеют одни и те же параметры, то я ограничусь описанием параметров только у первой функции. Итак

CreateVPNConnection

Функция вызывает мастера для создания нового VPN-подключения.

Описание функции в Delphi:

function CreateVPNConnection(hwndParent, dwWizardType, dwContextFlags,
  dwUserFlags, hUserContext: cardinal; pszCommandLine: PWideChar): HRESULT;
  stdcall; external connect name 'CreateVPNConnection';

Параметры функции:

hwndParent - дескриптор родительского окна;

dwWizardType - определяет стиль мастера подключения. Этот параметр необязательный и может принимать по умолчанию значение 0. Это же значение является и единственным, судя по документации в MSDN.

dwContextFlags - контекстные флаги, определяющие поведение мастера. Значение по умолчанию - 0. Может принимать одно из следующих значений:

0 - мастер возвращает результаты синхронно

1 - мастер возвращает результаты асинхронно, используя для этого события Windows.

dwUserFlags - пользовательские флаги, определенные в приложении. Можно устанавливать значение по умолчанию - 0;

hUserContext - дескриптор потока вызывающего приложения. Можно выставить значение по умолчанию - 0.

pszCommandLine - пользовательские параметры командной строки. Параметр может принимать значение nil или одно из следующих:

-HideFinishPage - скрывает страницу завершения работы мастера;

-SkipInternetDetection - скрыть страницу мастера, показывающую определено ли у пользователя подобное соединение или нет.

-SkipExistingConnections - скрыть страницу мастера, показывающую список, существующих соединения. Этот параметр обычно используется при создании дополнительных подключений.

Пример вызова функции:

if CreateVPNConnected(0,0,0,0,0,nil)=S_Ok then
  ShowMessage('Мастер вызван успешно');

Результат вызова функции:

GetInternetConnected

Функция запускает мастер подключения к Интернет. Список параметров тот же. что и у предыдущей функции. Результат вызова:

GetNetworkConnected

функция вызывает мастер подключения к локальной сети. Параметры те же. что и у CreateVPNConnection. Результат вызова:

GetVPNConnected

Вызывает мастер создания VPN-подключения. Результат вызова:

Вот пять функций, которые можно использовать для проверки и настройки с Интернет-соединения, создания VPN-подключения и подключения к локальной сети.



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 08.04.2011 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
TeeChart for .NET with source code single license
VMware Workstation 14 Player for Linux and Windows, ESD
The BAT! Home- 1 компьютер
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
СУБД Oracle "с нуля"
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Новые материалы
Delphi - проблемы и решения
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100