Delphi Контроль з’єднань з Internet

Причиною, що спонукала мене написати цю статтю, була нестабільність роботи з'єднання з Інтернетом, яке досить часто розривалося. А стандартна функція ОС Windows ХР не справлялася з покладеною на неї обов'язком відновлення розірваного з'єднання. Плюс до цього, не так вже й зручно «гортати» системний журнал у пошуку причини розриву, або часу розриву, або інших якихось логів. людям) … перепрошую, відволікся Приступимо до вирішення цього питання. Як мову програмування використовуватимемо Delphi 7 версії.

Перше, що нам треба розглянути, це засоби для роботи з системою встановлення віддаленого доступу (RAS). Даний засіб є набір API-функцій, які зберігаються в системній бібліотеці rasapi.dll, використовуваної ОС.

Це досить потужна бібліотека і для вирішення нашої проблеми нам знадобляться не всі функції. Тому ми розглянемо лише необхідні нам. Перелічу їх:

RasEnumConnections – функція перевірки наявності встановлених з'єднань; RasEnumEntries – функція отримання списку з'єднань (зареєстрованих) у системі; RasDial – функція встановлення з'єднання. Що ж тепер необхідно сформулювати тих. завдання розв'язання поставленого завдання. І так:

Необхідно визначити/отримати список з'єднань (зареєстрованих у системі) Реалізувати процедуру додзвону Реалізувати обробник-таймер, який перевірятиме, через певний інтервал часу, статус встановленого з'єднання Написати процедуру ведення лога – журнал користувача. Крім того, щоб програма була більш гнучкою, то ми реалізуємо дружній інтерфейс,якому дозволимо користувачеві вибирати зі списку з'єднань (яких може бути більше одного). Тож почнемо ми з останнього.

Для цього запустимо Delphi, створимо новий проект та збережемо його під назвою, наприклад ControlConn. Скинемо на форму:

2 ListBox'a; 3 кнопки; 1 поле введення для визначення інтервалу перевірки статусу з'єднання. Тепер проведемо деяке приготування. Один ListBox назвемо ActivCon - до нього будуть занесені відомості про існуючі з'єднання, а другий назвемо ControlCon - у ньому будуть з'єднання які необхідно контролювати. Одна з кнопок відповідатиме за запуск процесу контролю – і матиме не двозначне ім'я start, решта 2-х кнопок необхідна для маніпулювання вмістом ListBox'ів, додати до списку контрольованих з'єднань і видалити зі списку. Поле введення назвемо interval.

Створимо для форми подію OnActivate, на вкладці Event в інспекторі об'єктів. У ньому ми опишемо код, який отримуватиме список з'єднань. До речі, зауважу, для тих хто тільки починає і тих, хто цього не знав, але програмує вже давно, що добрим стилем програмування є опис усіх своїх функцій та процедур, що використовуються в проекті, в окремому модулі. У цьому випадку у нас немає потреби виносити код в окрему функцію. Але варто мати на увазі, що в цьому є два основні плюси: