Описание.

Данный проект даёт возможность создавать и использовать плагины, написанные с применением .NET Framework.
Проект выполнен в виде сборки dotNetInteropPlugin.dll. Вам необходимо подключить данную сборку к проекту для получения возможности создавать свои плагины.
Для AIMP2 данная сборка будет отображаться в качестве отдельного плагина. В окне его настроек появляется возможность управлять плагинами, написанными с применением .NET.

Документация к объектам во время разработки.

Кроме самой сборке вы можете обнаружить файл с краткой документацией для объектов dotNetInteropPlugin.XML. Для того, чтобы во время разработки была доступна данная документация, необходимо держать её в той же директории, что и подключаемая сборка dotNetInteropPlugin.dll. При теневом копировании сборок (используется по умолчанию в Visual Studio) нужно вручную скопировать данный файл в ту же директорию, что и dotNetInteropPlugin.dll (обычно bin/Debug или bin/Release).

Требования к разрабатываемому плагину.

  • Должен быть реализован в виде сборки (Class Library).
  • Должен использовать .NET Framework 4.
  • Должен содержать не абстрактный класс, унаследованный от MAIMPManagedPlugin и помеченный атрибутом AIMPManagedPluginAttribute. Кроме того данный класс должен иметь конструктор без параметров.

Важные моменты при создании базового класса плагина.

Не рекомендуется выполнять инициализацию данных вашего плагина в конструкторе основного класса. Вы должны выполнять всю инициализацию внутри метода Initialize, т.к. только после его вызова будет доступен объект в свойстве Player вашего класса, предоставляющий интерфейс к плееру.
При выгрузке плагина происходит автоматическая отписка от всех событий, удаление добавленных в процессе работы пунктов меню и фреймов настроек.
Плагин по умолчанию не использует отдельный домен, но если вам он необходим, то можно внутри атрибута AIMPManagedPluginAttribute сообщить об этом, путём установки свойства RequireAppDomain в true.

Создание простейшего плагина.

  1. Создайте новый проект. В качестве типа проекта выберите Class Library. В качестве целевого фреймворка – .NET Framework 4.
  2. Добавьте в References проекта сборку dotNetInteropPlugin.dll
  3. Создайте новый класс, который будет являться стартовым (например, PrimaryClass).
  4. Добавьте ссылку на пространство имён dotNetInteropPlugin.PluginDev
  5. Унаследуйте ваш класс от класса MAIMPManagedPlugin
  6. Реализуйте все абстрактные поля данного класса:
    1. bool HasSettingDialog { get; } – сообщает, если у плагина окно настроек
    2. void Initialize(); - вызывается при инициализации плагина.
    3. void ShowSettingDialog(IWin32Window ParentWnd); - вызывается, когда пользователь нажимает на кнопку Настроек плагина.
    4. void Dispose() – вызывается при выгрузке плагина.
  7. Пометьте класс атрибутом AIMPManagedPluginAttribute атрибутом, задав основные свойства:
    1. string Author – автор плагина
    2. string Description – краткое описание плагина
    3. string Name – название плагина
    4. int Version – версия плагина в формате x.xx
    5. bool RequireAppDomain – сообщает о необходимости запускать плагин в отдельном домене.

После выполнения данных действий плагин готов. Соберите проект и скопируйте его сборку вместе со сборкой dotNetInteropPlugin.dll в директорию AIMP2/PlugIns/.

Особенности работы с плейлистами.

В проекте существует 2 типа плейлистов: "подключённые" и "отсоединённые".
"Подключённый" плейлист предоставляет возможность работы с плейлистами из плеера, т.е. все опреации сразу же будут отражаться в плеере. Данный тип плейлиста реализован в виде класса MAIMPConnectedPlaylist. Экземпляры объектов, реализующих данный класс создаются менеджером плейлистов.
"Отсоединённый" плейлист не связан с плеером и по сути предоставляет собой обычную коллекцию треков. Он реализован в виде класса MAIMPDisconnectedPlaylist. Вы можете сам создавать объекты данного класса, а также выполнять наследование от него.
Плейлисты можно подсоединять и отсоединять с помощью методов менеджера плейлистов:
MAIMPConnectedPlaylist Connect(MAIMPDisconnectedPlaylist pls, Boolean SetActive, Boolean PlayIt, Boolean UpdateTags);
MAIMPDisconnectedPlaylist Disconnect(MAIMPConnectedPlaylist pls, Boolean NeedRemove);
Если вы хотите создать новый плейлист в плеере, то лучше будет создать «отсоединённый» плейлист, наполнить его треками и подсоединить. Также «отсоединённые» плейлисты лучше использовать при необходимости выполнять интенсивные операции с треками внутри.

Last edited Jan 23, 2011 at 11:10 PM by FramePS2, version 2

Comments

No comments yet.