Рандеву с Мирандой Николай «GorluM» Андреев Хакер, номер #073, стр. 073-112-2 Из всего вышесказанного следует то, что для реализации плагина (для Миранды или какого-либо другого приложения) нам потребуется создать динамическую библиотеку, которая экспортировала бы условленный в SDK программы набор функций. Мы это обязательно сделаем в процессе разработки плагина для Миранды, но сперва нам надо разобраться, в каком формате наша стройная подружка экспортирует функциональность из своего ядра в плагин. То есть мы должны понять, что мы сможем сделать из плагина и как мы это сможем. Реализация плагинной системы в Миранде Сразу хочу заметить, разработана система очень и очень качественно, можно даже сказать, неглупо. Как это принято у всех плагинных систем, Миранда передает структуру с набором связующих с ядром функций аргументом функции Load (структура называется PLUGINLINK и описана в файле newpluginapi.h SDK). В наборе адресов функций содержится только все самое необходимое, ты не встретишь там ни функцию отправки сообщения на заданный номер, ни процедуру для форматирования винчестера. Там только 12 системных функций (для версии 0.3.3+), среди которых стоит выделить только две действительно полезные: HookEvent - для обработки определенного события (то есть для установки функции-обработчика) и CallService - для загрузки сервисных функций ядра или других плагинов Миранды. Сервисные функции - это способ, за счет которого в структуре PLUGINLINK не нужно передавать тучу функций. Для этого есть некоторая таблица, в которой содержатся адреса процедур. Получить доступ к ней можно с помощью упомянутой выше CallService, указав ей параметры запускаемой функции, то есть ее ID - строку вроде «SRMsg/SendCommand» и два аргумента, lParam и wParam. С помощью этих сервисных функций и реализуется связь ядро - плагин и плагин – плагин, и именно с помощью них мы и будем реализовывать нашу гадкую программу. Наверняка тебе также будет очень интересно узнать, что такую сервисную функцию ты можешь создать и сам с помощью CreateServiceFunction, передаваемой в уже изученной нами структуре. Это может быть полезно, если ты вдруг захочешь написать новый плагин, используя функциональность старого :). Сварганим что-нибудь? Я долго думал, чем же тебя порадовать, какой плагин для Миранды написать, так чтобы это было полезно и понятно одновременно. В итоге я остановился на спам-боте - напишем плагин, который будет висеть в Миранде и рассылать на случайные контакты в твоем листе случайные сообщения. Для осуществления сей фичи тебе потребуется SDK Миранды, который находится в архиве вместе с исходными кодами. В SDK находятся заголовочные файлы, в которых описаны основные структуры для работы с плагином и ID сервисных функций. Как я уже говорил, плагин - это динамическая библиотека, поэтому не забудь указать в настройках проекта, что это не приложение, а DLL. |