Сделай сам: Управление Winamp
29.11.2007 от Иван ШиркоВ этот раз мы поговорим об управлении популярнейшим аудио-плеером, имя которому – 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: используется не только для выполнения определённых действий, но и для определения различной информации (версия, текущая композиция, количество композиций и т.д.).

В таблице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); – переход к предыдущей композиции.

В Таблице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;
Рубрики: Delphi, Winamp, Сделай сам |
30.03.2008 в 23:18
[…] с плеером Winamp мы научились в статье Управление Winamp. Теперь перейдем к разработке плагинов для него. […]
03.06.2008 в 22:34
Очень полезный блог, автор всегда (почти) описывает актальные темы. Спасибо.
05.06.2008 в 06:08
Мне понравилось.
26.09.2008 в 21:55
Увлекательно. Добавлю в закладки. А сколько времени ушло на написание статьи?
01.03.2009 в 22:57
Статья хорошая, но шлак один есть:
не все “основные” сообщения WM_USER в той таблице :-\
01.10.2009 в 07:24
А у меня вопрос как вы узнаете код и описание команды и т.д.
Вопрос в том каким образом узнать список команд которыми можно пользоватся с помощью сообщений для любого другого приложения???
это очень важно! зарание благодарен
09.11.2009 в 07:33
>>dimid
для winamp’a команды брал из мануала, но для любого другого приложения можно подбирать команды простым перебором. Когда-то давно писал прогу для управления горячими клавишами любым приложением, там просто перебор использовался