Сделай сам: Управление Winamp | Программирование на Delphi и не только

Почитайте!

Нас читают

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

Mail.Ru

Rambler's Top100

Programming Blogs - BlogCatalog Blog Directory

Сделай сам: Управление Winamp

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

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

Пример к статье 

В этот раз мы поговорим об управлении популярнейшим аудио-плеером, имя которому – Winamp. Благодаря своей нулевой цене, поддержке скинов и, что самое главное, плагинов, Winamp установлен на огромном количестве ПК. И этим программным шедевром Nullsoft, оказывается, можно довольно легко управлять программно. В связи с этим, большинство soft-каталогов не обходится без пары-тройки программ управления Winamp’ом. Давайте рассмотрим, что же происходит в недрах таких программ.

Winamp поддерживает большое количество сообщений, которые можно послать его окну при помощи функции
SendMessage(
HWND:hWnd, // идентификатор окна
Msg:Integer, // посылаемое сообщение
WParam:Integer, // первый параметр сообщения
LParam:Integer // второй параметр сообщения
);

Winamp поддерживает два основных типа сообщения (параметр Msg):
WM_COMMAND: служит только для подачи определённых команд Winamp’у (Play, Stop, Next, Close и т.д.);
WM_USER: используется не только для выполнения определённых действий, но и для определения различной информации (версия, текущая композиция, количество композиций и т.д.).


Winamp
В таблице1 приведены основные константы для первого параметра сообщения WM_COMMAND. Для их использования запишите процедуру:
Procedure WinampCommand(Command:Integer);
begin
//поиск окна Winamp’a
WinampHWND := findwindow('Winamp v1.x',nil);
//если поиск успешен,то посылаем сообщение
if (WinampHWND <> 0) then
SendMessage(WinampHWND, WM_Сommand, Command, 0);
end;
Теперь для подачи сообщения типа WM_COMMAND нужно выбрать из таблицы понравившуюся константу и передать её в качестве параметра процедуре WinampCommand. Пример:
WinampCommand(40044); – переход к предыдущей композиции.
Winamp


В Таблице2 перечислены основные константы для сообщений WM_USER. Для их использования запишите следующую функцию:
Function WinampUser(data: Integer, id: Integer):integer;
begin
WinampHWND := findwindow('Winamp v1.x', nil);
if (WinampHWND <> 0) then
result := SendMessage(WinampHWND, WM_USER, data, id)
else result := -1;
end;

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

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

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

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

    […] с плеером Winamp мы научились в статье Управление Winamp. Теперь перейдем к разработке плагинов для него. […]

  2. путин пишет:

    Очень полезный блог, автор всегда (почти) описывает актальные темы. Спасибо.

  3. Антон пишет:

    Мне понравилось.

  4. Кондрат пишет:

    Увлекательно. Добавлю в закладки. А сколько времени ушло на написание статьи?

  5. Cros пишет:

    Статья хорошая, но шлак один есть:
    не все “основные” сообщения WM_USER в той таблице :-\

  6. dimid пишет:

    А у меня вопрос как вы узнаете код и описание команды и т.д.
    Вопрос в том каким образом узнать список команд которыми можно пользоватся с помощью сообщений для любого другого приложения???
    это очень важно! зарание благодарен

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

    >>dimid

    для winamp’a команды брал из мануала, но для любого другого приложения можно подбирать команды простым перебором. Когда-то давно писал прогу для управления горячими клавишами любым приложением, там просто перебор использовался

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

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