winamp pobranie danych o odtwarzanym utworze

0

jak w temacie:
jak pobrać do Delfina info o aktualnie odtwarzanym utworze?

0

Akurat miałem pod ręką:

 Var
  h1 , h2 : HWnd;
  Bufor : array[0..255] of Char;
begin
  h1 := FindWindow(nil, 'Winamp v1.x');
  h2 := FindWindowEx(h1 , 0, 'Winamp v1.x', nil);
  GetWindowText(h2, Bufor, SizeOf(Bufor));
  ShowMessage(Bufor);
end;

Wystarczy nieco obrobić wynikowy łańcuch i masz gotowe.

0

Na podstawie: http://read.pudn.com/downloads167/sourcecode/multimedia/audio/770132/WinampControl.pas__.htm - pobranie nazwy odtwarzanego utworu:

function GetTrackTitle : string;
var
  P : PChar;
  Handle : HWND;
begin
  Result := '';
  getmem(p, 255);
  Handle := FindWindow('Winamp v1.x', nil);
  if Handle <> 0 then
  begin
    GetWindowText(Handle, P, 255);
    if pos('- Winamp', P) > 0 then
    begin
      Result := Copy(P, 1, -2 + Length(P) - (Length(P) - Pos('- Winamp', P)));
      Delete(Result, 1, Pos(' ', Result));
    end;
  end;
end;

Czyli mniej więcej jak poprzednik pisał, ale wiem że jest chyba też inny sposób, ale teraz nie mogę go znaleźć. A w razie czego jeżeli chcesz także pobrać adres strumienia lub fizyczną nazwę odtwrzanego pliku (kod znaleziony kiedyś na google i lekko przerobiony) to:

//...
const
  WinAmp_Class = 'Winamp v1.x';

function GetWinampFilename: string;
var
  TempStr : string;
  WinAmp_HWND, TempHandle : THandle;
  Dat2 : array[0..500] of Char;
  TrackPos : integer;
  Temp, MPointer : cardinal;
begin
  WinAmp_HWND := FindWindow(WinAmp_Class, nil);
  TrackPos := SendMessage(WinAmp_HWND, WM_USER, 0, 125);
  MPointer := SendMessage(WinAmp_HWND, WM_USER, TrackPos, 211);
  GetWindowThreadProcessId(WinAmp_HWND, TempHandle);
  WinAmp_HWND := OpenProcess(PROCESS_ALL_ACCESS, False, TempHandle);
  ReadProcessMemory(WinAmp_HWND, Pointer(MPointer), @Dat2, 500, Temp);
  CloseHandle(WinAmp_HWND);
  TempStr := Dat2;
  Result := TempStr;
end;

Nalezy tylko mieć na uwadzę, że WinAmp w nowej skórce standardowej (z menu u góry) może mieć inną nazwę klasy okna, ale to już sobie możesz ustalić jakimiś Spy'ami albo TDWinInfo.

0

Winamp ma swoje API i są do tego komponenty http://www.torry.net/pages.php?id=1546 Nie testowałem ale z tego co piszą TWinampControl na pewno ma taką funkcję "GetTrackTitle: Gets the title of the currently playing track ".

1 użytkowników online, w tym zalogowanych: 0, gości: 1