Registriert seit: 1. Aug 2003
Ort: Kippenheim
90 Beiträge
|
Re: Winamp > Aktueller Titel
9. Jan 2005, 20:17
Hi,
auch wenn das Problem schon gelöst scheint, hier zwei Funktionen aus meinem Archiv:
Delphi-Quellcode:
function GetWinampSongTitle(Index: Integer): String;
var
hWndWinamp, TempHandle : THandle;
dat2: array[0..500] of Char;
TrackPos: Integer;
temp, MPointer: Cardinal;
begin
hwndWinamp := FindWindow('Winamp v1.x',nil);
if (Index < 0) then TrackPos := SendMessage(hWndWinamp, WM_USER, 0, 125) else TrackPos := Index;
MPointer := SendMessage(hWndWinamp, WM_USER, TrackPos, 212);
GetWindowThreadProcessId(hwndWinamp, @TempHandle);
hwndWinamp := OpenProcess(PROCESS_ALL_ACCESS, false, TempHandle);
ReadProcessMemory(hWndWinamp, Pointer(MPointer), @dat2, 500, temp);
CloseHandle(hWndWinamp);
Result := String(dat2);
end;
function 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;
Index gibt jeweils die Position des Playlisteintrags an (beginnend bei 0), -1 entspricht dem aktuellen Eintrag.
Viele Grüße,
Markus
if u cn rd ths u cn bcm a c prgmr!
|