Об IRC. Доступно и со вкусом.

Руководство по написанию DLL для mIRC в Delphi. Часть 2.

После прочтения первой статьи, мы уже имеем достаточные знания написать что-нибудь посложнее, на пример напишем простенькую DLL для управления известным медиа проигрователем Winamp.
После прочтения первой статьи, мы уже имеем достаточные знания написать что-нибудь посложнее, на пример напишем простенькую DLL для управления известным медиа проигрывателем Winamp.

Тестировалось это все опять же на последней версии mIRC и Delphi 7.

Вам наверно часто приходилось видеть во время пребывания в IRC как кто-нибудь кидал на канал, что в данный момент проигрывает его любимая программа Winamp. Делается это с помощью нехитрого плагина, установленного в сам проигрыватель. Сегодня же мы будем писать свою DLL для почти полного управления Winamp и вытаскивания из него нужной информации.

Итак, приступим. Создаем пустую форму для создания DLL как в предыдущей статье и суем туда нашу первую функцию:

function nexttrack(mWnd, aWnd: HWND; data, parms: PChar; show, nopause:boolean):integer;
stdcall; export;
begin
sendmessage(findwindow('Winamp v1.x',nil), WM_COMMAND, 40048,0); //след трек
end;

exports nexttrack;

Сейчас попробуем разобраться как и что работает. Всего 1 строчка, а вы боялись ;) Функция SendMessage посылает специальное сообщение окну. Полный синтаксис и описание можно найти в файле помощи по Delphi. Функция имеет 4 параметра: 1 – окно, которому мы все это шлем; 2 – команда окну; 3 и 4 – специальные параметры для команды. В нашем случае окно мы находим функцией findwindow, где первый параметр это название класса окна, а второй – название заголовка. Естественно для универсальности, мы ищем по классу. Далее шлем команду WM_COMMAND с параметром 40048, который и будет переключать программу на следующий трек. Список всех параметров можно найти на официальном сайте Winamp.

Получаем исходник следующего вида:

library Project2;
uses
windows, messages;

function nexttrack(mWnd, aWnd: HWND; data, parms: PChar; show, nopause:boolean):integer;
stdcall; export;
begin
sendmessage(findwindow('Winamp v1.x',nil), WM_COMMAND,40048,0); //след трек
end;
exports nexttrack;

begin
end.

Компилируем DLL, копируем ее в папку с mIRC, если она еще не там, запускаем Winamp и включаем для проверки песню, далее открываем сам mIRC и пишем команду /dll project2.dll nexttrack и о, чудо Winamp переключил песенку ;)

Для удобства управления, можете забиндить кнопки на управление или же добавить их на панель управления.

Полную версию DLL с исходниками, качаем тут