Delphi

Xakep, номер #047, стр. 047-078-1

IP Config. Часть 2

Horrific aka Фленов Михаил (smiandr@mail.ru)

www.cydsoft.com/vr-online

Сегодня я закончу рассказ, начатый в позапрошлом номере ][. А именно - мы напишем полноценный вариант программы IP Config. Напоминаю, что в прошлый раз мы создали форму и поместили на нее компонент TPageControl с двумя закладками. Мы научились получать от системы все, что находится на первой закладке, и теперь осталось только заполнить вторую закладку полезной инфой.

Сегодня нам предстоит познакомиться с самым интересным - мы научимся получать из системы количество установленных сетевых устройств и их свойства. Среди этих свойств будет определение IP-адреса и маски сети. Только что я зашел в свой TheBat и понял, что вопрос о том, как определить IP-адрес, чуть ли не самый популярный. Но я эту тему пока не затрагивал в журнале, потому что способ, который я сегодня покажу, будет достаточно сложным. Зато он позволяет определить IP и маску любого сетевого устройства, установленного в системе.

Design time

Открой пример, который мы написали в позапрошлой статье, и подкорректируй вторую закладку, как на рисунке 1. На этой закладке у меня вверху расположен компонент TComboBox, в котором будет список установленных в системе сетевых устройств. Чуть ниже находится компонент TListView, у которого нужно установить следующие свойства:

Name - изменим имя компонента на IPListView.

ViewStyle - здесь нужно указать vsReport.

Columns - здесь нужно создать две колонки с именами IP Address и Subnet Mask (IP-адрес и маска сети). Я люблю писать такие вещи на английском языке, но если хочешь, то можешь писать хоть на китайском.

Дальше идут компоненты TLabel, в которых мы будем выводить полученную из системы информацию.

Список устройств

Теперь научимся получать список установленных в системе сетевых устройств. Я советую это делать по событию OnShow для формы. В этом случае проверка будет происходить только при появлении формы, а потом мы будем лишь получать информацию об уже выбранном устройстве. Где-то я видел тулзу, которая обновляла этот список при каждом обращении пользователя к любому элементу. Лично я не понял в этом смысла. Если ты считаешь, что за время выполнения программы список может измениться (например, включили новое USB устройство), то для таких случаев лучше добавить кнопку "Обновить" и не мучить пользователя бесполезными задержками.

Итак, по событию OnShow для главной формы пишем следующий код:

procedure TSystemInfoForm.FormShow(Sender: TObject);

var

pAdapterInfo, pAdapt:PIP_ADAPTER_INFO;

pAddrStr:PIP_ADDR_STRING;

begin

//Очищаю список устройств

AdapterCB.Items.Clear;

//Получить количество устройств

AdapterInfoSize:=0;

Err:=GetAdaptersInfo(nil, AdapterInfoSize);

//Если произошла ошибка, то...

if (Err0) and (ErrERROR_BUFFER_OVERFLOW) then

begin

AdapterCB.Items.Add('Error');

exit;

end;

//Получить информацию об устройствах.

pAdapterInfo := PIP_ADAPTER_INFO(GlobalAlloc(GPTR, AdapterInfoSize));

GetAdaptersInfo(pAdapterInfo, AdapterInfoSize);

pAdapt := pAdapterInfo;

//Проверяю тип полученного адаптера

Содержание  Вперед на стр. 047-078-2

Выпуски журнала "Xakep"
Журнал Хакер. Содержание номера #001Журнал Хакер. Содержание номера #002Журнал Хакер. Содержание номера #003Журнал Хакер. Содержание номера #004Журнал Хакер. Содержание номера #005Журнал Хакер. Содержание номера #006Журнал Хакер. Содержание номера #007Журнал Хакер. Содержание номера #008Журнал Хакер. Содержание номера #009Журнал Хакер. Содержание номера #010Журнал Хакер. Содержание номера #011Журнал Хакер. Содержание номера #012Журнал Хакер. Содержание номера #013Журнал Хакер. Содержание номера #014Журнал Хакер. Содержание номера #015Журнал Хакер. Содержание номера #016Журнал Хакер. Содержание номера #017Журнал Хакер. Содержание номера #018Журнал Хакер. Содержание номера #019Журнал Хакер. Содержание номера #020Журнал Хакер. Содержание номера #021Журнал Хакер. Содержание номера #022Журнал Хакер. Содержание номера #023Журнал Хакер. Содержание номера #024Журнал Хакер. Содержание номера #025Журнал Хакер. Содержание номера #026Журнал Хакер. Содержание номера #027Журнал Хакер. Содержание номера #028Журнал Хакер. Содержание номера #029Журнал Хакер. Содержание номера #030Журнал Хакер. Содержание номера #031Журнал Хакер. Содержание номера #032Журнал Хакер. Содержание номера #033Журнал Хакер. Содержание номера #034Журнал Хакер. Содержание номера #035Журнал Хакер. Содержание номера #036Журнал Хакер. Содержание номера #037Журнал Хакер. Содержание номера #038Журнал Хакер. Содержание номера #039Журнал Хакер. Содержание номера #040Журнал Хакер. Содержание номера #041Журнал Хакер. Содержание номера #042Журнал Хакер. Содержание номера #043Журнал Хакер. Содержание номера #044Журнал Хакер. Содержание номера #045Журнал Хакер. Содержание номера #046Журнал Хакер. Содержание номера #047Журнал Хакер. Содержание номера #048Журнал Хакер. Содержание номера #049Журнал Хакер. Содержание номера #050Журнал Хакер. Содержание номера #051Журнал Хакер. Содержание номера #052Журнал Хакер. Содержание номера #053Журнал Хакер. Содержание номера #054Журнал Хакер. Содержание номера #055Журнал Хакер. Содержание номера #056Журнал Хакер. Содержание номера #057Журнал Хакер. Содержание номера #058Журнал Хакер. Содержание номера #059Журнал Хакер. Содержание номера #060Журнал Хакер. Содержание номера #061Журнал Хакер. Содержание номера #062Журнал Хакер. Содержание номера #063Журнал Хакер. Содержание номера #064Журнал Хакер. Содержание номера #065Журнал Хакер. Содержание номера #066Журнал Хакер. Содержание номера #067Журнал Хакер. Содержание номера #068Журнал Хакер. Содержание номера #069Журнал Хакер. Содержание номера #070Журнал Хакер. Содержание номера #071Журнал Хакер. Содержание номера #072Журнал Хакер. Содержание номера #073Журнал Хакер. Содержание номера #074Журнал Хакер. Содержание номера #075Журнал Хакер. Содержание номера #076Журнал Хакер. Содержание номера #077Журнал Хакер. Содержание номера #078Журнал Хакер. Содержание номера #079Журнал Хакер. Содержание номера #080Журнал Хакер. Содержание номера #081Журнал Хакер. Содержание номера #082Журнал Хакер. Содержание номера #083Журнал Хакер. Содержание номера #084Журнал Хакер. Содержание номера #085Журнал Хакер. Содержание номера #086Журнал Хакер. Содержание номера #087Журнал Хакер. Содержание номера #088Журнал Хакер. Содержание номера #089Журнал Хакер. Содержание номера #090Журнал Хакер. Содержание номера #091Журнал Хакер. Содержание номера #092Журнал Хакер. Содержание номера #093Журнал Хакер. Содержание номера #094Журнал Хакер. Содержание номера #095Журнал Хакер. Содержание номера #096Журнал Хакер. Содержание номера #097Журнал Хакер. Содержание номера #098Журнал Хакер. Содержание номера #099Журнал Хакер. Содержание номера #100Журнал Хакер. Содержание номера #101Журнал Хакер. Содержание номера #102Журнал Хакер. Содержание номера #103Журнал Хакер. Содержание номера #104Журнал Хакер. Содержание номера #105Журнал Хакер. Содержание номера #106Журнал Хакер. Содержание номера #107Журнал Хакер. Содержание номера #108Журнал Хакер. Содержание номера #109Журнал Хакер. Содержание номера #110Журнал Хакер. Содержание номера #111Журнал Хакер. Содержание номера #112Журнал Хакер. Содержание номера #113Журнал Хакер. Содержание номера #114