Entwickler-Ecke

Windows API - Titeldauer aus Winamp abfragen


mattl - Di 10.07.07 12:52
Titel: Titeldauer aus Winamp abfragen
Ich lasse in meinem Programm die bis jetzte gespiele Titelzeit aus winamp abfregn mit


Delphi-Quelltext
1:
SendMessage(hwndWinamp,WM_USER,0 , 105);                    


kann man auch irgendwie die gesamdauer des titels abfragen?


Gausi - Di 10.07.07 13:48

Ja, wenn der dritte Parameter 1 ist, dann liefert Winamp die Dauer des aktuellen Titels. Allerdings nicht in Millisekunden, sondern in Sekunden.

Delphi-Quelltext
1:
SendMessage(hwndWinamp, WM_USER, 1105);                    


mattl - Di 10.07.07 16:42

gibt es dazu irgend eine liste mit den parametern mit den man informationen aus winamp abfrage kann?

mfg


Gausi - Di 10.07.07 16:52

Jep, gibt es. Einmal gibts in der Library eine ganz vorzügliche Anleitung (:mrgreen:) zum Auslesen der Playlist von Winamp [http://www.delphi-library.de/topic_wie+kann+man+die+Playlist+von+Winamp+einlesen_48816.html]. Außerdem kann man sich mal das SDK von Winamp runterladen: http://www.winamp.com/development/sdk . Besonders interessant ist dann die Datei wa_ipc.h - da sind die ganzen Konstanten und Messages definiert.


mattl - Di 10.07.07 17:37

#define IPC_PLAYFILEW 1100
/* This is sent as a WM_COPYDATA with IPC_PLAYFILE as the dwData member and the string
** of the file / playlist to be enqueued into the playlist editor as the lpData member.
** This will just enqueue the file or files since you can use this to enqueue a playlist.
** It will not clear the current playlist or change the playback state.
**
** COPYDATASTRUCT cds = {0};
** cds.dwData = IPC_ENQUEUEFILE;
** cds.lpData = (void*)"c:\\test\\folder\\test.mp3";
** cds.cbData = lstrlen((char*)cds.lpData)+1; // include space for null char
** SendMessage(hwnd_winamp,WM_COPYDATA,0,(LPARAM)&cds);
**
**
** With 2.9+ and all of the 5.x versions you can send this as a normal WM_WA_IPC
** (non WM_COPYDATA) with an enqueueFileWithMetaStruct as the param.
** If the title member is null then it is treated as a "thing" otherwise it will be
** assumed to be a file (for speed).
**
** enqueueFileWithMetaStruct eFWMS = {0};
** eFWMS.filename = "c:\\test\\folder\\test.mp3";
** eFWMS.title = "Whipping Good";
** eFWMS.length = 300; // this is the number of seconds for the track
** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)&eFWMS,IPC_ENQUEUEFILE);
*/


ich möchte jetzt den dateipafd zum aktuell gespielten track abfragen nur werde ich aus diesen informationen nicht ganz schlüssig welche parameter ich hier jetzt verwenden muss..bis jetzt habe ich immer nur Integer werde abgefragt aber jetzt handelt es sich ja um einen string