|
|
|||||||||||||||||||||||||||||
|
Проверка и настройка сетевых подключений в Delphi. Новый API Windows 7.Источник: wwwwebdelphiru
В целом, тема, заявленная в посте далеко не нова - ответ на вопрос "Как в 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:
Следующие функции используются для вызова мастеров создания различных подключений и т.к. все они имеют одни и те же параметры, то я ограничусь описанием параметров только у первой функции. Итак CreateVPNConnectionФункция вызывает мастера для создания нового VPN-подключения. Описание функции в Delphi:
Параметры функции: hwndParent - дескриптор родительского окна; dwWizardType - определяет стиль мастера подключения. Этот параметр необязательный и может принимать по умолчанию значение 0. Это же значение является и единственным, судя по документации в MSDN. dwContextFlags - контекстные флаги, определяющие поведение мастера. Значение по умолчанию - 0. Может принимать одно из следующих значений: 0 - мастер возвращает результаты синхронно 1 - мастер возвращает результаты асинхронно, используя для этого события Windows. dwUserFlags - пользовательские флаги, определенные в приложении. Можно устанавливать значение по умолчанию - 0; hUserContext - дескриптор потока вызывающего приложения. Можно выставить значение по умолчанию - 0. pszCommandLine - пользовательские параметры командной строки. Параметр может принимать значение nil или одно из следующих: -HideFinishPage - скрывает страницу завершения работы мастера; -SkipInternetDetection - скрыть страницу мастера, показывающую определено ли у пользователя подобное соединение или нет. -SkipExistingConnections - скрыть страницу мастера, показывающую список, существующих соединения. Этот параметр обычно используется при создании дополнительных подключений. Пример вызова функции:
Результат вызова функции: GetInternetConnectedФункция запускает мастер подключения к Интернет. Список параметров тот же. что и у предыдущей функции. Результат вызова: GetNetworkConnectedфункция вызывает мастер подключения к локальной сети. Параметры те же. что и у CreateVPNConnection. Результат вызова: GetVPNConnectedВызывает мастер создания VPN-подключения. Результат вызова: Вот пять функций, которые можно использовать для проверки и настройки с Интернет-соединения, создания VPN-подключения и подключения к локальной сети.
|
|