AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Winamp > Aktueller Titel

Ein Thema von endeffects · begonnen am 9. Jan 2005 · letzter Beitrag vom 9. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

Winamp > Aktueller Titel

  Alt 9. Jan 2005, 18:15
Hallo,

ich lausche des öfteren mal einigen Livestreams aus dem
Internet über Winamp. Nun hab ich mir gedacht das es ganz
schön wäre wenn ich mir ein kleines Programm bastel
das auf Knopfdruck den aktuell gespielten Titel (der mir gefällt)
in einer Liste speichert. Meine Frage dazu ist nun ob
von Euch vielleicht Jemand schon etwas ähnliches gemacht hat
und/oder eine Idee hätte wie ich an den Text der in Winamp
durchläuft bzw. in der Playlist auftaucht herran komme.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Winamp > Aktueller Titel

  Alt 9. Jan 2005, 18:18
Hi!

Ich hab da mal was kleines vorbereitet:

Delphi-Quellcode:
function EnumWindowsProc(const hWnd : Longword; Param: lParam): LongBool; stdcall;
var
  Buffer: array[0..1024] of Char;
begin
  Result := True;
  GetWindowText(hWnd, Buffer, sizeof(Buffer));
  if lstrlen(Buffer) = 0 then
   begin
    exit;
   end
  else
   begin
    Form1.listbox1.items.Add (buffer);
   end;
end;
Delphi-Quellcode:
function GetText(Wnd: HWND): string;
var
  textlength: Integer;
  Text: PChar;
begin
  textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
  if textlength = 0 then Result := ''
  else
  begin
    GetMem(Text, textlength + 1);
// Änderung ->
    if Assigned(Text) then
    try
      SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text));
// Result := Text;
// Änderung ->
    SetString(Result, Text, lstrlen(Text));
    finally
      FreeMem(Text);
    end;
  end;
end;
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: integer;
  LPARRAM : DWord;
  str: string;
begin
if not WinAmp1.Checked then
 begin
  listbox1.Clear;
  EnumWindows (@EnumWindowsProc,Integer(@LPARRAM));
  for i:=0 to Listbox1.Items.count-1 do
   begin
    if pos(' - Winamp', listbox1.Items[i]) <> 0 then
     begin
       str:=copy(listbox1.Items[i],1+pos(' ', listbox1.Items[i]),pos(' - Winamp', listbox1.Items[i])-1-pos(' ', listbox1.Items[i]));
       RegistryEintrag('['+str+']');
       Desktopschrift(str);
     end;
   end;
 end;
end;

Ist aus nem Programm rauskopiert, ich hoffe, ich habe alle relevanten Stellen...


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Winamp > Aktueller Titel

  Alt 9. Jan 2005, 18:27
Ich glaube es gibt sogar ne WinAMP API, vielleicht kann die das?
Julian J. Pracht
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#4

Re: Winamp > Aktueller Titel

  Alt 9. Jan 2005, 18:35
Zitat:
Ich glaube es gibt sogar ne WinAMP API, vielleicht kann die das?
Ja das gibt es, ich finds auf der WinAmp-Page aber net mehr.
Dafür gibs jetzt ein SDK ( WinAmp SDK )

Vielleicht hilft dir das.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#5

Re: Winamp > Aktueller Titel

  Alt 9. Jan 2005, 18:57
erstmal danke für eure hilfe,
die sdk ist leider komplett in c/c++ erstellt worden,
damit weiß ich leider nichts anzufangen
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#6

Re: Winamp > Aktueller Titel

  Alt 9. Jan 2005, 19:07
ich bin unter http://www.torry.net/quicksearchd.ph...namp&Title=Yes fündig geworden
danke nochmal für die hilfe

Delphi-Quellcode:
var
 P: PChar;
 Handle: HWND; title: string;
begin
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
    title:=Copy(P,1,-2+Length(P)-(Length(P)-Pos('- Winamp',P)));
   end;
 end;
 showmessage(title);
  Mit Zitat antworten Zitat
DaFox

Registriert seit: 31. Jul 2003
Ort: Kippenheim
90 Beiträge
 
#7

Re: Winamp > Aktueller Titel

  Alt 9. Jan 2005, 19: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
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#8

Re: Winamp > Aktueller Titel

  Alt 9. Jan 2005, 19:29
oh danke dir =)
damit läßt sich sicherlich einiges mehr anfangen
  Mit Zitat antworten Zitat
Äfan
(Gast)

n/a Beiträge
 
#9

Re: Winamp > Aktueller Titel

  Alt 10. Jan 2005, 13:39
Cool, also Titel bekomm ich, aber nur den, den ich eingebe, also z.B.

edit1.Text := GetWinampSongTitle(8);

Wie kann ich es machen, dass er den titel nimmt, der gerade läuft ?

MFG
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#10

Re: Winamp > Aktueller Titel

  Alt 10. Jan 2005, 13:44
Hi!

Hast du dir mal meine Codes angesehen?


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz