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

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

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

Всем большуйщий привет!!!

Сейчас я покажу вам способ проверки подключения к Интернет, который доступен пользователям Windows Vista , 7 и 8

Этот способ использует возможности Get Connected Wizard API — API настройки подключения. Все функции, которые экспортируются, содержаться в connect.dll .

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

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

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

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

Хочу привести пример как можно использовать функцию IsInternetConnected в Delphi:const

connect = 'connect.dll';

function IsInternet Connected: HRESULT; external connect name 'IsInternet Connected'; stdcall;

….

begin

if IsInternetConnected=S_OK then

ShowMessage('Подключен к Интернет')

end;

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

CreateVPNConnection

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

Функция в Delphi описана так:function Create VPNC onnection (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-подключения.Надеюсь вам сразу же стало все ясно и понятно если что то комментируем.