Sorry, daß ich das Thema nochmal aufwärme aber es paßt so genial.
Ich möchte ebenfalls den Liedwechsel mitbekommen, zusätzlich aber noch den Namen des aktuellen Liedes. Ich habe bereits im Winamp Forum nachgefragt - dort reagiert seit 5 Tagen keiner. Durch die Boardsuche habe ich ebenfalls die Winamp
DLL entdeckt, komme allerdings nicht so recht damit klar.
Ich arbeite hier mit einer 2.9er Winamp Version und das reicht auch vollkommen, da mein Plugin für meinen eigenen Gebrauch gedacht ist.
Soweit ich das aus diversen Anleitungen verstanden habe, muß man sich ein Stück Speicher reservieren und dann der Winamp
API mitteilen, daß sie den Songtitel dort hineinkopieren soll?
Edit: Folgender Code funktioniert perfekt. Die erste Funktion ermittelt den Inhalt der Winamp Titelleiste - das entspricht idR dem Eintrag in der Playlist. Die zweite Funktion ermittelt den Dateinamen des aktuell abgespielten Stücks mit vollem Pfad. Ich hoffe es hilft jemandem!
Delphi-Quellcode:
function getWinampTitle:string;
const cMaxBuffer = 255;
var h:HWND;
buffer:array[0..cMaxBuffer] of Char;
begin
result:='';
h:=FindWindow('Winamp v1.x', nil);
if h<>0 then
begin
SendMessage(h, WM_GETTEXT, cMaxBuffer, integer(@buffer[0]));
result:=buffer;
end;
end;
function getWinampPlayListFile:string;
const WM_WA_IPC = WM_USER;
IPC_GETPLAYLISTFILE = 211;
IPC_GETLISTPOS = 125;
var h:HWND;
s:PChar;
begin
result:='';
h:=FindWindow('Winamp v1.x', nil);
if h<>0 then
begin
s:=PChar(SendMessage(h, WM_WA_IPC, SendMessage(h, WM_WA_IPC, 0, IPC_GETLISTPOS), IPC_GETPLAYLISTFILE));
if s<>nil then result:=s;
end;
end;