Сделай сам на Delphi: Визуализационный плагин к Winamp | Программирование на Delphi и не только

Почитайте!

Нас читают

Статьи о программировании и не только

Mail.Ru

Rambler's Top100

Programming Blogs - BlogCatalog Blog Directory

Сделай сам на Delphi: Визуализационный плагин к Winamp

30.03.2008 от Иван Ширко

Страница: 1 2 3 4 5 6

  waveformNch: Integer;
  spectrumData: array[0..1, 0..575] of byte;
  waveformData: array[0..1, 0..575] of byte;
  //процедура, которая будет вызываться при нажатии на кнопку "Конфигурация"
  Config: procedure( thismod: PwinampVisModule ); cdecl;
  //функция, вызываемая при инициализации плагина, должна возвратить 0, если всё в порядке
  Init: function( thismod: PwinampVisModule ): integer; cdecl;
  //функция, вызываемая при получении очередной порции данных
  //от Winamp'a, именно здесь нужно реагировать на изменение
  //музыкальных данных, должна возвратить 0, если всё в порядке,
  // или 1, если плагин завершает свою работу

  Render: function( thismod: PwinampVisModule ): Integer; cdecl;
  //процедура, вызываемая при завершении работы плагина
  Quit: procedure( thismod: PwinampVisModule ); cdecl;
  //здесь можно хранить указатель на свои данные
  userData: pointer;
end;

Ну а теперь сделаем простой и абсолютно бесполезный визуализационный плагин, маленький анализатор спектра. Создайте в Delphi DLL. После этого создайте форму и положите на неё шесть компонентов TProgressBar, для которых свойство Orientation установите в положение pbVertical, а Max – в 300. Пример расположения компонент можете посмотреть на рис.1.

Плагин к Winamp

Всё, форму можно больше не трогать, займёмся теперь DLL. Вот код библиотеки:

library vis_MyFirstPlug;
uses
  Windows, forms,
  Unit1 in 'Unit1.pas' {Form1};
const
  //версия
  VIS_HDRVER = $101;
  //класс окна
  szAppName = 'OurPlug';
  //описание плагина
  descr = 'Мой первый VIS плагин';
  //описание модуля
  mod1_descr = 'А это единственный модуль моего плагина';
type
  //типы заголовка и тела плагина
  PwinampVisModule = ^winampVisModule;
  winampVisModule = packed record
  description: PChar;
  hwndParent: HWND;
  hDllInstance: HWND;
  sRate: integer;
  nCh: integer;
  latencyMs: integer;
  delayMs: integer;
  spectrumNch: integer;
  waveformNch: integer;
  spectrumData: array[0..1,0..575] of byte;
  waveformData: array[0..1,0..575] of byte;
  Config: procedure(thismod: PwinampVisModule);cdecl;
  Init: function(thismod: PwinampVisModule): integer;cdecl;
  Render: function(thismod: PwinampVisModule): integer;cdecl;

Страница: 1 2 3 4 5 6

Рубрики: Delphi, Winamp, Сделай сам |

Комментарии (15)

  1. IVAn sCm пишет:

    kRUTO!!! aftoru respeKt!!! DAVNO ISkaL TAKoE

  2. Dosha пишет:

    Спасибо за модули. В выходные попробую разобраться подробнее

  3. Фанат пишет:

    Отлично написано

  4. Иван пишет:

    Статья очень пригодилась, все просто и понятно.

    Огромное спасибо автору!:)

  5. Zveryoga пишет:

    Люблю когда по сути, мне понравилось.

  6. hitzinger пишет:

    Благодарю, очень полезная вещь

  7. help пишет:

    У меня коряво получается, но все равно спасибо.

  8. Коля пишет:

    У меня не вышло(((

  9. Гриша пишет:

    Спасибо попробую.

  10. Виталий пишет:

    Спасибо большое!!! Одно но : в 2 плагине в коде нужно заменить “*********
    keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0);
    //key release
    *****”
    на
    “*********
    keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0) else
    //key release
    *****”. Иначе просто все лампочки всегда выключаються.

  11. Иван Ширко пишет:

    >>Виталий

    Спасибо!

  12. dfm пишет:

    хм…интересно..спасибо за идею, давненько хотел что-либо подобное попробовать…

  13. uniforgot пишет:

    Отлично я нашла что искала:)

  14. dpath пишет:

    Класс, получилось :) спасибо.

  15. yammysound пишет:

    Извините, может не по теме, но возможно вы подскажете, как сделать, что бы винамп запускался с моим скином на любом компе (на флешке если принесу и т.д.)… Т.е. сделать свой скин скином по умолчанию…

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.