Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #75, МАРТ 2005 г.

Компонент для хакера

gh05t

Хакер, номер #075, стр. 075-106-2


Ну что ж, с функциональностью компонента мы определились. Теперь начнем его создавать. Для этого закрой все текущие проекты и выбери меню Component -> New Component. В появившемся окне укажи:

Ancestor type - родительский класс (TComponent в нашем примере),

Class Name - имя класса для твоего компонента (у меня TGettingPriviliges),

Pallete Page - закладка, на которой будет располагаться твой компонент,

Unit File Name - имя и путь до файла с исходниками компонента,

Search path – здесь будут перечислены пути, по которым Delphi ищет исходные коды. Если ты хочешь расположить компонент в директории, о которой Delphi еще не знает, то добавь путь к ней сюда.

Нажми «Ok». Перед тобой появится редактор кода с шаблоном будущего компонента. В нем сейчас лишь одна процедура – Register, обязательная для любого компонента. Она регистрирует компонент в Delphi и располагает его на заданной закладке.

Пока в модуле кроме функции регистрации компонента есть лишь объявление нового класса, потомка TComponent. Он ничем не отличается от своего родителя, но сейчас мы это начнем исправлять. Для начала объявим необходимые модули и переменные. Добавь в uses модуль Windows – нам понадобятся некоторые константы и функции из него. Также создай раздел const и напиши в нем:

SE_LOAD_DRIVER_NAME ='SeLoadDriverPrivilege';

SE_SHUTDOWN_NAME ='SeShutdownPrivilege';

Эта пара констант, определяющих типы привилегий, которые мы будем получать. Далее в разделе private объяви несколько переменных:

Раздел private

private

{ Private declarations }

isNT: boolean;

FgetLoadDriver: boolean;

FgetShutdown: boolean;

FOnGetLoadDriverPrivileges: TNotifyEvent;

FOnGetShutdownPrivileges: TNotifyEvent;

Каждая из них пригодится нам в будущем. Например isNT хранит результат определения принадлежности текущей ОС к NT-системам. Следующие логические переменные нужны для указания, какие именно привилегии мы хотим получить. True - нам нужна эта привилегия, false - она нам нафиг не сплющилась. Переменные незнакомого типа TNofifyEvent - это не что иное, как события компонента. У нас их два, а больше пока и не надо. По правилам хорошего тона в программировании принято начинать имя подобных переменных с буквы F, чтобы было легче их отличить.

Небольшое лирическое отступление: здесь и далее разделы, в которых надо располагать переменные, взяты не с потолка. Каждый из них определенным образом ограничивает видимость единиц, расположенных внутри него. Так, раздел private дает доступ к переменным только внутри одного модуля, раздел public напротив, не накладывает никаких ограничений, а в разделе published объявляются те переменные, которые должны быть видны на этапе конструирования.

Назад на стр. 075-106-1  Содержание  Вперед на стр. 075-106-3