Seite 1 von 1
Winamp Playliste auslesen (Erledigt)
Verfasst: 24.02.2014 18:58
von enigma
Hallo,
ich versuche mit PureBasic die Winamp-Playlist auszulesen. Bei meiner Suche habe ich folgendes gefunden:
Code: Alles auswählen
Procedure Winamp_GetPlaylistTitle()
LastPlayListTitle = PeekS(SendMessage_(hWndWinamp, #WM_USER, (PlLength-1), #WINAMP_IPC_GETPLAYLISTTITLE))
ProcedureReturn
EndProcedure
Allerdings bekomme ich nur ein unleserliches Zeichen zurück.
Wenn ich SendMessage_ ohne PeekS aufrufe
Code: Alles auswählen
LastPlayListTitle = SendMessage_(hWndWinamp, #WM_USER, (PlLength-1), #WINAMP_IPC_GETPLAYLISTTITLE)
bekomme ich eine mehrstellige Zahl zurück die mir auch nicht weiter hilft.
Was mache ich falsch???
Hat jemand einen Tip für mich?
Gruß Enigma
Re: Winamp Playliste auslesen
Verfasst: 24.02.2014 21:30
von Derren
Warum postest du keinen lauffähigen Code?
Ich find nicht mal das Winamp Fenster. Hab mit ShoWin den Titel ausgelesen, und FindWindow_() gibt trotzdem null zurück.
Den Wert der Konstante hab ich mir auch ergoogeln müssen.
Und ein Link zu dem ursprünglichen Code den du als Vorlage verwendest wär vielleicht auch nett.
edit: So, hab es jetzt soweit, bekomme aber immer einen IMA oder einen leeren String.
Code: Alles auswählen
EnableExplicit
Define hWndWinamp = FindWindow_("Winamp v1.x",#Null)
#WINAMP_IPC_GETPLAYLISTTITLE = 212
Procedure Winamp_GetPlaylistTitle(hWnd, playListEntry)
Protected result.i
result = SendMessage_(hWnd, #WM_USER, playListEntry, #WINAMP_IPC_GETPLAYLISTTITLE)
Debug result ;immer konstant, auch wenn man dne Playlisteintrag verändert
If result
Debug MemoryStringLength(result) ;Sogar hier schon ein IMA
Debug ">>"+PeekS(result)+"<<" ;IMA
EndIf
EndProcedure
Winamp_GetPlaylistTitle(hWndWinamp, 10)
Re: Winamp Playliste auslesen
Verfasst: 24.02.2014 22:13
von - chris -
Code: Alles auswählen
;http://forums.winamp.com/showthread.php?threadid=180297
;http://www.entwickler-ecke.de/topic_wie+kann+man+die+Playlist+von+Winamp+einlesen_48816,0.html
#IPC_GETLISTLENGTH = 124
#WINAMP_IPC_GETPLAYLISTTITLE = 212
*buffer = AllocateMemory(1024)
If *buffer = 0
End
EndIf
hWndWinamp = FindWindow_("Winamp v1.x", 0)
If hWndWinamp
ListLength = SendMessage_(hWndWinamp, #WM_USER, 0, #IPC_GETLISTLENGTH)
Debug ListLength
BaseAdress = SendMessage_(hWndWinamp, #WM_USER, 0, #WINAMP_IPC_GETPLAYLISTTITLE)
Debug BaseAdress
GetWindowThreadProcessId_(hwndWinamp, @ProcessId)
Debug ProcessId
hProcess = OpenProcess_(#PROCESS_ALL_ACCESS, #False, ProcessId)
Debug hProcess
ReadProcessMemory_(hProcess, BaseAdress, *buffer, 1024, @NumberOfBytesRead)
Debug NumberOfBytesRead
Debug PeekS(*buffer, -1, #PB_Ascii)
CloseHandle_(hProcess)
EndIf
Re: Winamp Playliste auslesen
Verfasst: 24.02.2014 22:30
von enigma
@ - chris -
besten Dank für deine schnelle Antwort. Genau das habe ich gesucht.
Jetzt muss ich es nur noch verstehen.

Werde mir dazu mal deine Links ansehen.
@ Derren
auch dir vielen Dank für deine Mühe.
Gruß
Enigma
Re: Winamp Playliste auslesen (Erledigt)
Verfasst: 25.02.2014 19:38
von Sicro
- chris - hat geschrieben:Code: Alles auswählen
[...]hProcess = OpenProcess_(#PROCESS_ALL_ACCESS, #False, ProcessId)
Alle Rechte sind nicht erforderlich, #PROCESS_VM_READ reicht.
Re: Winamp Playliste auslesen (Erledigt)
Verfasst: 26.02.2014 14:57
von enigma
@Sicro
Danke, getestet und für gut befunden

aber was bringt mir das? Geschwindigkeit? Speicher? ...?
Danke für eine Info
Gruß
Enigma
Re: Winamp Playliste auslesen (Erledigt)
Verfasst: 26.02.2014 16:14
von NicTheQuick
Das bringt dir so einiges. Virenscanner meckern nicht oder weniger. Man braucht eventuell keine Adminrechte. Du musst immer auch andere Windows-Systeme in Betracht ziehen.
Re: Winamp Playliste auslesen (Erledigt)
Verfasst: 26.02.2014 18:07
von enigma
Aha
Besten Dank
Enigma