Показать сообщение отдельно
  #3  
Старый 03.10.2010, 15:52
Аватар для Rastaman
Rastaman Rastaman вне форума
Прохожий
 
Регистрация: 09.09.2009
Адрес: Ставрополь
Сообщения: 6
Репутация: 10
Восклицание

v1s2222 - спасибо за помощь, пороюсь на твоих ссылках, а пока:
Вот код загрузки плагинов:

Код:
procedure TMainForm.FormCreate(Sender: TObject);
var
  i: Integer;
  PluginsList: TStringList;
  PlugMenuClass: TPluginMenuClass; // тип описывающий все что нужно для меню плагина
begin
  PluginsList := TStringList.Create;
  PluginsList := FindPlugins(ExtractFilePath(Application.ExeName)); // ищим все плагины и создаем список адресов файлов
  PluginsList.Sort; // вот здесь решается порядок загрузки плагинов :)
  SetLength(hPack, PluginsList.Count); // устанавливаю размер массива HMODULE равный кол-ву найденных плаинов
  for i := 0 to PluginsList.Count - 1 do
  begin
    hPack[i] := LoadPackage(PluginsList[i]); // гружу плагин
    if hPack[i] > 0 then
    begin
      PlugMenuClass := TPluginMenuClass(GetClass('TPluginMenu')); // получаю данные для меню
      if Assigned(PlugMenuClass) then
      begin
        with PlugMenuClass.Create(Self) do // создаю меню для плагина
        begin
          OnClick := OpenPluginForm; // процедура запускает плагин
          ShowHint := True;
          Name := 'PM' + IntToStr(i); // задаю имя пункта меню (пока на всякий случай)
        end;
        mmComponents.Add(TPluginMenu(Self.FindComponent('PM' + IntToStr(i)))); // добавляю меню плагина в меню программы
      end;
    end;
  end;
  PluginsList.Free;
end;

P.S.
Ксожалению, по указанным ссылкам, ничего мне подходящего не нашел Но спасибо за попытку помочь.

P.S. (2)
Проверенно! Handle hPack[0] и hPack[1] (ну соответственно и дальше так будет) отличаются, а это значит, что в каждый hPack ГРУЗИТСЯ СВОЙ ПЛАГИН!
НО ПОЧЕМУ ОН НЕ РАБОТАЕТ!!!!?????
__________________
Мой мир! Мои правила! Как хочу, так и нарушаю!
Ответить с цитированием