Показать полную графическую версию : Delphi | Написать плагин к винампу
Interceptor
25-01-2005, 21:30
Может кто нибудь встречался с подобным делом.
Есть такая вот штука:
IPC_GETPLAYLISTFILE=211;
{(requires Winamp 2.04+, only usable from plug-ins (not external apps))
name:=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTFILE);
IPC_GETPLAYLISTFILE gets the filename of the playlist entry [index].
returns a pointer to it. returns NULL on error}
Так как же мне получить имя этого файла в переменную типа String или PChar, когда функция SendMessage возвращает результат Integer (это наверное указатель на нуль терминальную строку)?
hasherfrog
25-01-2005, 22:48
#define IPC_GETPLAYLISTFILE 211
// (requires Winamp 2.04+, only usable from plug-ins (not external apps))
// ** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTFILE);
// **
// ** IPC_GETPLAYLISTFILE gets the filename of the playlist entry [index].
// ** returns a pointer to it. returns NULL on error.
Вы на чём пишите?
Interceptor
28-01-2005, 11:19
Я пишу на Delphi.
Вообще то кажется можна сделать так:
Var
name:PChar;
begin
name:=PChar(SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTFILE));
Memo1.Lines.Append(name);
end;
НО, - тут я кое - что пропустил: эта процедурка оказывается пашет только в том случае, если моя програмка будет плагином к winamp.
А с написаниям плагинов - я еще не знаком. :(
Interceptor
28-01-2005, 11:29
Может обяснит кто-нибудь на пальцах: как написать плагин к Winamp на Delphi?
Хотя бы основные основные вещи проясните на эту туманную для меня вещь.
ЗЫ. На С у меня код (из winamp SDK) есть - но я в нем мало-что могу разобрать.
hasherfrog
28-01-2005, 11:43
Дык, конечно только для плагинов :) Во-первых, это там и написано, а во-вторых, передаётся же указатель на строку, строка хранится внутри контекста процесса, естественно, что только потоки внутри данного контекста смогут её прочитать :)
Interceptor
28-01-2005, 11:55
Ну а как насчет самого плугина? Какие минимальные требования с точки присутствия процедур?
hasherfrog
28-01-2005, 12:26
Если очень кратенько:
Плагин (к чему бы то ни было) - это по сути просто dll. Т.е. Вы пишите программу, которая компилится и линкуется дельфями как динамическая библиотека.
Наружу из длл "торчат" только несколько стандартизованных процедур, которые доступны пользователя. Чтобы их было видно, винамп (и любая другая прога) должна сама знать про них. Для этого используются всякие-разные "процедуры регистрации". В самой главной (dllmain) вы вызываете некую функцию регистрации и "прописываетесь" в процессе винампа.
Узнать о "главной" и спецификациях "видных для пользователя" можно из документации. Дальше только нужно действовать согласно указаниям. В Вашем случае придётся немного попыхтеть (совсем чуть-чуть) для перевода С-шных обявлений (что-нибудь типа __cdecl(dllexport)) в паскалевские. Это не сложно, уверен.
hasherfrog
15-02-2005, 12:55
А вот несколько иное решение :)
Управление винампом 5
http://www.cppfrance.com/code.aspx?ID=29460
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.