Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pfad des aktuellen WinAmp-Liedes korrekt auslesen (https://www.delphipraxis.net/45415-pfad-des-aktuellen-winamp-liedes-korrekt-auslesen.html)

voodoo 5. Mai 2005 22:02


Pfad des aktuellen WinAmp-Liedes korrekt auslesen
 
Zum Auslesen des Pfades benutze ich derzeit folgende Funktion:

Delphi-Quellcode:
function Tmain_form.GetWinampFileName(Index: Integer): String;
const
  IPC_GETPLAYLISTFILE = 211;
  WM_WA_IPC = WM_USER;
var
  Process, ReadCount, PID: DWord;
  hWndWinamp: hWnd;
  Title: String;
  iTitle: Integer;
begin
  hWndWinamp := FindWindow(PChar('Winamp v1.x'), nil);
  if (Index < 0) then Index := SendMessage(hWndWinamp, WM_USER, 0, 125);
  GetWindowThreadProcessId(hWndWinamp, @PID);
  Process := OpenProcess(PROCESS_VM_READ, FALSE, PID);
  SetLength(Title, 256);
  iTitle := SendMessage(hWndWinamp, WM_WA_IPC, Index, IPC_GETPLAYLISTFILE);
  ReadProcessMemory(Process, Pointer(iTitle), @Title[1], 256, ReadCount);
  CloseHandle(Process);
  Result := Title;
end;
Auf den ersten Blick scheint das auch recht gut zu funktionieren.

Allerdings versuche ich zu überprüfen, ob das Lied in einer Playlist ist, und dieser Pfad-Vergleich geht immer schief.
Beim Debuggen habe ich nun gemerkt, dass GetWinampFileName(-1) noch viel mehr enthält, als den Pfad des aktuellen Liedes.

Hier ein Beispiel:
Code:
'I:\MP3\xxx\yyy\zzz.mp3'#0'3'#0'a.mp3'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
Lässt sich die Funktion so erweitern, dass wirklich nur noch der Pfad enthalten ist oder muss ich den String immer irgendwie abschneiden?

Vielen Dank im Voraus!
Was

[edit=MrSpock]Zeilenumbrüche zwischen die vielen #0en eingefügt. Mfg, MrSpock[/edit]

Dax 5. Mai 2005 22:05

Re: Pfad des aktuellen WinAmp-Liedes korrekt auslesen
 
Nimm statt Title: string lieber einen PChar mit entsprechender Länge, dann funktionierts ;)

voodoo 5. Mai 2005 22:21

Re: Pfad des aktuellen WinAmp-Liedes korrekt auslesen
 
Dankeschön!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 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-2025 by Thomas Breitkreuz