Компонент для хакера 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 объявляются те переменные, которые должны быть видны на этапе конструирования. |