Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Winamp: Liedwechsel in Delphi mitbekommen (https://www.delphipraxis.net/125965-winamp-liedwechsel-delphi-mitbekommen.html)

Helmi 15. Dez 2008 20:03


Winamp: Liedwechsel in Delphi mitbekommen
 
Hallo,

gibt es die Möglichkeit einen Liedwechsel in Winamp in Delphi mitzubekommen?
Falls ja, wie kann ich das auslesen?

taaktaak 16. Dez 2008 07:23

Re: Winamp: Liedwechsel in Delphi mitbekommen
 
Moin,
vermutlich ist das versionsabhängig, bei WinAmp 2.64 konnte man mit SendMessage den aktuellen Status abfragen:

Delphi-Quellcode:
Status:=SendMessage(HWNDWinAmp,WM_USER,0,104)
// Status=1 -> Play
// Status=3 -> Pause
// andere Werte = STOP

Helmi 16. Dez 2008 09:09

Re: Winamp: Liedwechsel in Delphi mitbekommen
 
Hallo,

danke für den Tip!

Der funktioniert auch noch bei der neuesten Winamp-Version!

arc 14. Mai 2011 12:01

AW: Winamp: Liedwechsel in Delphi mitbekommen
 
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz