Einzelnen Beitrag anzeigen

Benutzerbild von arc
arc

Registriert seit: 6. Nov 2009
Ort: Elbflorenz
62 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Winamp: Liedwechsel in Delphi mitbekommen

  Alt 14. Mai 2011, 13:01
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;

Geändert von arc (14. Mai 2011 um 14:34 Uhr)
  Mit Zitat antworten Zitat