winamp pobranie danych o odtwarzanym utworze

Odpowiedz Nowy wątek
2011-08-09 16:29
winamp
0

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

ja bym spojrzał w google, w sumie taki problem oprócz ciebie miało jedynie kilka tysięcy programistów. - Rev 2011-08-09 16:58
Rev, racja! - marogo 2011-08-09 17:31

Pozostało 580 znaków

2011-08-09 17:30
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.

Pozostało 580 znaków

2011-08-09 20:06
0

Na podstawie: http://read.pudn.com/download[...]70132/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.


Pozostało 580 znaków

2011-08-10 09:14
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 ".


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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