Autor Beitrag
Default112
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 76

Win XP
D6 Prof
BeitragVerfasst: Sa 25.02.06 15:19 
Sooo... Ich hab da mal ein Problem :D

Ich möchte den Titel des aktuellen Liedes sowie die Position und die gesamtspieldauer auslesen. Im Grunde kein Problem, aber: Das Programm darf kein Winamp-Plugin werden O_o Ich hab im Grunde gar keinen Plan. Obwohl ich mit Plugins den Krempel ausgelesen hab und per Sendmessage an mein Programm geschickt hab, muss ich das ganze auch ohne Plugin schaffen.

Dazu habe ich folgenden Thread gefunden: klick

Dort wird gezeigt, wie man den Titel des aktuellen Liedes auslesen kann, und zwar so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function GetWinampFilename(data:Integer): String;
var Text, tempStr: String;
    hwndWinamp, TempHandle : THandle;
    dat2: array[0..500of Char;
    TrackPos: Integer;
    temp, MPointer: Cardinal;
begin
  hwndWinamp:= FindWindow('Winamp v1.x',nil);
  if data<0 then TrackPos:= SendMessage(hwndWinamp,WM_USER,0 , 125else TrackPos:=data;
  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);
  tempStr:= dat2;  // ;-)
  Result:= tempStr;
end;


Aber im Grunde verstehe ich da nur Bahnhof und meine Versuche das umzuschreiben sind leider in die Hose gegangen. Ich würde mich freuen, wenn mir da jemand auf die Sprünge helfen könnte.

Gruss
Def
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 25.02.06 15:27 
Ich bin auf diesen Thread auch schonmal gestoßen, und hab dann das daraus gemacht. Damit erhalte ich zwar auch nicht die Dauer des Stücks, aber mit dem Link zu der Winamp-Seite dürfte man dahinter kommen, wie man die Länge des Stückes bekommt.

btw.: Mit Plugins hat das nichts zu tun ;-)

_________________
We are, we were and will not be.
Default112 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 76

Win XP
D6 Prof
BeitragVerfasst: So 26.02.06 00:54 
Nun ja, ich habe ja schon einiges mit dem SDK gemacht, so kann ich "theroretisch" auch die Zeit auslesen, nur funktioniert das von aussen nicht O_o Folgendes sollte laut SDK funktionieren:
ausblenden Delphi-Quelltext
1:
SendMessage(hwndWinamp,WM_USER,0 , 105);					

Damit bekomme ich die Dauer des aktuellen Songs als Integer-Variable zurück. Aber wie komme ich von aussen daran?

Gruss
Def
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 26.02.06 09:58 
Indem du in deinem Programm ein Funktion schreibst, dir dort zunächst das Winamp-Fensterhandle besorgst, und dann die Message dahin sendest. Das Ergebnis der Sendung ist dann dein Wert...Was ich in der Library geschrieben habe, funktioniert von deinem Programm aus. Die einzige Bedingung ist, dass auch Winamp gerade laufen muss...

_________________
We are, we were and will not be.
Default112 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 76

Win XP
D6 Prof
BeitragVerfasst: So 26.02.06 19:08 
JAAA! Schlagt mich! Es war ja so einfach -_- Ich hatte zunächst versucht das SendMessage in die Funktion oben einzubauen. Aber naja. Jetzt funktioniert es und ich bin glücklich ;)