Проверка и конфигуриране на мрежови връзки в Delphi
Като цяло темата, посочена в публикацията, далеч не е нова - отговорът на въпроса "Как мога да разбера в Delphi, че компютърът е свързан към Интернет?" на страници от миналия XX век. Но времето не стои неподвижно и програмистите с различни нива на обучение предлагат различни начини за проверка на връзката на компютър с интернет - от малки списъци от 5-6 реда код до спиращи дъха алгоритми за проверка.
Днес ще покажа още един начин за проверка на интернет връзката, достъпен за потребителите на Win Vista - 7.
Този метод използва възможностите наGet Connected Wizard API - API за настройки на връзката. С него можете например да се обадите на съветника за настройки на VPN, локалната мрежа или, както в нашия случай, да проверите интернет връзката.
Преди да започнем да се запознаваме с API, ще подчертая още веднъж -работата с API е достъпна под Windows Vista и по-нови версии. В по-ранните версии на ОС работата не е възможна.
Всички експортирани функции се съдържат вconnect.dll.
Нека започнем с най-простата функция -IsInternetConnected
Свързан ли е с интернет
Функцията не съдържа никакви параметри и в случай на успех връщаS_OK, ако потребителят е свързан към интернет иS_FALSE в противен случай.
Трябва да се отбележи, че тази функция само "познава" интернет връзката за потребителя, използвайки NCSI и NLM в действие. Въпреки че резултатът е донякъде вероятностен, тестването на функцията на моя компютър показа задоволителен резултат - функцията не направи грешка нито веднъж при проверка на връзките.
Забележка: има много подобна функция в URL.dll, наречена IsInetOffline - провеждапроверка за "изключване" от интернет, но IsInetOffline връща false не само когато компютърът е свързан към интернет, но и когато не е имало опити за свързване, което прави използването на тази функция много ненадеждно за проверка на връзката.
Пример за използване на функцията IsInternetConnected в Delphi:
Следните функции се използват за извикване на съветниците за създаване на различни връзки и т.н. всички те имат еднакви параметри, тогава ще се огранича до описание на параметрите само за първата функция. Така
Създайте VPNВръзка
Функцията извиква съветника за създаване на нова VPN връзка.
Описание на функцията в Delphi:
hwndParent - манипулатор на родителски прозорец;
dwWizardType - дефинира стила на съветника за свързване. Този параметър не е задължителен и по подразбиране може да бъде0. Същата стойност е единствената, съдейки по документацията в MSDN.
dwContextFlags - контекстни флагове, които определят поведението на съветника. Стойността по подразбиране е0. Може да приема една от следните стойности:
0 - главният връща резултати синхронно
1 - Съветникът връща резултати асинхронно, използвайки събития на Windows.
dwUserFlags - потребителски флагове, дефинирани в приложението. Можете да зададете стойност по подразбиране - 0;
hUserContext е манипулаторът на нишката на извикващото приложение. Можете да зададете стойността по подразбиране -0.
pszCommandLine - потребителски опции на командния ред. Параметърът може да приеме стойностnil или едно от следните:
-HideFinishPage - скрива страницата за завършване на съветника;
-SkipInternetDetection - скриване на страницата на съветника, показваща дали потребителят има подобнивръзка или не.
-SkipExistingConnections - скриване на страницата на съветника, показваща списъка със съществуващи връзки. Тази опция обикновено се използва при създаване на допълнителни връзки.