Контрол на интернет връзката на Delphi
Причината, която ме подтикна да напиша тази статия, беше нестабилността на интернет връзката, която често прекъсваше. И стандартната функция на Windows XP не се справи с възложената й отговорност за възстановяване на прекъсната връзка. Освен това не е толкова удобно да „прелиствате“ системния дневник в търсене на причината за прекъсването, времето на прекъсване или други регистрационни файлове.(Човек трябва само да си спомни онези ужасни времена, когато „потокът“ имаше до 4 прекъсвания. Колко нерви те съсипаха за хората) ... Съжалявам, отклоних се. Нека започнем да решаваме този проблем. Като език за програмиране ще използваме Delphi 7 версия.
Първото нещо, което трябва да вземем предвид, са инструментите за работа с инсталационната система за отдалечен достъп (RAS). Този инструмент е набор от API функции, които се съхраняват в системната библиотека rasapi.dll, използвана от операционната система.
Това е доста мощна библиотека и няма да имаме нужда от всички функции, за да решим проблема си. Затова ще разгледаме само тези, от които се нуждаем. Ще ги изброя:
RasEnumConnections – функция за проверка за установени връзки; RasEnumEntries – функция за получаване на списък с връзки (регистрирани) в системата; RasDial – функция за установяване на връзка. Е, сега е необходимо да ги формулираме. задача за решаване на проблема. Така:
Необходимо е да дефинирате/получите списък с връзки (регистрирани в системата) Внедрете процедурата за набиране Внедрете манипулатор на таймер, който ще проверява след определен интервал от време състоянието на установена връзка Напишете процедура за регистриране - персонализиран журнал. В допълнение към това да направим програмата по-гъвкава, ние ще внедрим приятелски интерфейс, вкоето позволява на потребителя да избира от списък с връзки (от които може да има повече от една). Затова ще започнем с последното.
За да направите това, стартирайте Delphi, създайте нов проект и го запазете с име, например ControlConn. Нека го поставим във формуляра:
2 ListBoxes; 3 бутона; 1 поле за въвеждане за определяне на интервала за проверка на състоянието на връзката. Сега нека направим малко подготовка. Нека наречем единия ListBox ActivCon – той ще съдържа информация за съществуващи връзки, а вторият ще се казва ControlCon – той ще съдържа връзки, които трябва да бъдат контролирани. Един от бутоните ще отговаря за стартиране на контролния процес - и ще има начало с недвусмислено име, останалите 2 бутона са необходими за манипулиране на съдържанието на ListBoxes, добавяне към списъка с контролирани връзки и премахване от списъка. Нека именуваме интервала на полето за въвеждане.
Нека създадем събитие OnActivate за формуляра в раздела Събитие в инспектора на обекти. В него ще опишем кода, който ще получи списъка с връзки. Между другото, ще отбележа, за тези, които тепърва започват и тези, които не знаят това, но програмират от дълго време, че добър стил на програмиране е да опишете всичките си функции и процедури, използвани в проекта, в отделен модул. В този случай не е необходимо да преместваме кода в отделна функция. Но трябва да се има предвид, че това има две основни предимства: