Перевірка та настройка мережевих підключень в Delphi. Новий API Windows 7., Windows, Операційні системи, статті

В цілому, тема, заявлена ​​в пості далеко не нова – відповідь на питання “Як у 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-підключення і підключення до локальної мережі.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*