jak w temacie:
jak pobrać do Delfina info o aktualnie odtwarzanym utworze?
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.
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.
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 ".
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.