AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Winamp: Liedwechsel in Delphi mitbekommen
Thema durchsuchen
Ansicht
Themen-Optionen

Winamp: Liedwechsel in Delphi mitbekommen

Ein Thema von Helmi · begonnen am 15. Dez 2008 · letzter Beitrag vom 14. Mai 2011
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz