Теперь осталось только собрать плагины и запустить. Сбор информации и запуск происходит по нажатию одноимённой кнопки на главной форме. Как собирать плагины — дело вкуса. В этом примере я сканирую заданный каталог, можно хранить в INI-файле, реестре, можн о придумать свой формат хранения. Сбор плагинов:
Code: |
// нажатие кнопки запуска procedure TfmMain.btStartClick(Sender: TObject); // добавление плагинов в список procedure AppendModulesList(FileName:String); var Module:TModule; IsValid:Boolean; begin // создание экземпляра плагина Module:=TModule.Create(FileName,IsValid); // если создан некорректно if not IsValid then // удаление Module.Free else begin // добавление SetLength(ModulesList,Length(ModulesList)+1); ModulesList[Length(ModulesList)-1]:=Module; end; end;
var sr:TSearchRec; i:Integer; begin // построение списка модулей SetLength(ModulesList,0); // поиск файлов *.dll if FindFirst(edPath.Text+'*.dll',faAnyFile and not faDirectory,sr)=0 then begin AppendModulesList(edPath.Text+sr.Name); while FindNext(sr)=0 do AppendModulesList(edPath.Text+sr.Name); end; // запуск найденных модулей if Length(ModulesList)>0 then begin for i:=0 to Length(ModulesList)-1 do begin // инициализация ModulesList[i].Initialize; // передача Application ModulesList[i].SetData(dkApplication,Application,SizeOf(Application)); // запуск плагина ModulesList[i].Run; end; // старт таймера Events.Enabled:=True; end; end; |
Мне кажется, что я достаточно подробно описал в комментариях производимые действия :) Ну и последнее — засылка данных по таймеру:
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!