Thema: Delphi Winamp > Aktueller Titel

Einzelnen Beitrag anzeigen

DaFox

Registriert seit: 1. Aug 2003
Ort: Kippenheim
90 Beiträge
 
#7

Re: Winamp > Aktueller Titel

  Alt 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!
  Mit Zitat antworten Zitat