dans un projet, je souhaite pouvoir envoyer un fichier a lire sur winamp,
j'ai tout bien fait avec les exemples vu a droite a gauche, j'ai la main sur tout winamp ... sauf un element.
quand je lis demande de jouer un fichier, winamp ne recoit que la premiere lettre de la chaine de caractere.
j'ai essayé une conversion en ascii mais le resultat est le meme.
quelqu'un aurait une idée ?
je mets ici le code concerné,
Code : Tout sélectionner
;Info: Winamp Remote Control
;Use PB-Memory.
Global hwnd_Winamp_
Declare Winamp_ToggleWindowVisible()
Procedure Winamp_Hide()
SendMessage_(hwnd_Winamp_,#WM_SIZE,#SIZE_MINIMIZED,0);send a message
ShowWindow_(hwnd_Winamp_,#SW_MINIMIZE); and minimize
ShowWindow_(hwnd_Winamp_,#SW_HIDE); und verstecken
EndProcedure
Procedure Winamp_Show()
ShowWindow_(hwnd_Winamp_,#SW_SHOW); entstecken
SendMessage_(hwnd_Winamp_,#WM_SIZE,#SIZE_RESTORED,0); wieder zurück
ShowWindow_(hwnd_Winamp_,#SW_RESTORE); und normal
EndProcedure
Procedure Winamp_ToggleVisible()
If hwnd_Winamp_
If ShowWindow_(hwnd_Winamp_,#SW_SHOWNA)=0
Winamp_Show()
Else
Winamp_Hide()
EndIf
EndIf
EndProcedure
Procedure StartWinamp(Winamp_EXE_.s)
load=0
Repeat
hwnd_Winamp_ = FindWindow_("Winamp v1.x",0)
If hwnd_Winamp_=0 And load=0
If FileSize(Winamp_EXE_)>0
RunProgram(Winamp_EXE_)
load=1
Else
load=-2
EndIf
EndIf
Until hwnd_Winamp_<>0 Or load=-2
If load=1
;minimize winamp
Winamp_Hide()
EndIf
ProcedureReturn hwnd_Winamp_
EndProcedure
#WM_WA_IPC=#WM_USER
Procedure SendWinamp(para1,para2)
If hwnd_Winamp_
ProcedureReturn SendMessage_(hwnd_Winamp_,#WM_WA_IPC,para1,para2)
EndIf
EndProcedure
Procedure CopyWinamp(para1,para2,para3)
If hwnd_Winamp_
cds.COPYDATASTRUCT
cds\dwData=para1
cds\lpData=para2
cds\cbData=para3
ProcedureReturn SendMessage_(hwnd_Winamp_,#WM_COPYDATA,0,cds)
EndIf
EndProcedure
Procedure KeyWinamp(para1)
If hwnd_Winamp_
ProcedureReturn SendMessage_(hwnd_Winamp_,#WM_COMMAND,para1,0)
EndIf
EndProcedure
Procedure Winamp_Version()
ProcedureReturn SendWinamp(0,0)
EndProcedure
Procedure Winamp_StartPlayback()
ProcedureReturn SendWinamp(0,100)
EndProcedure
Procedure Winamp_ClearFilelist()
ProcedureReturn SendWinamp(0,101)
EndProcedure
Procedure Winamp_StartPlay()
ProcedureReturn SendWinamp(0,102)
EndProcedure
Procedure Winamp_ChDirToDownload()
ProcedureReturn SendWinamp(0,103)
EndProcedure
Procedure Winamp_IsPlaying();1=play, 3=pause, 0=no
ProcedureReturn SendWinamp(0,104)
EndProcedure
Procedure Winamp_GetOutputTime(mode);0=Current Song,1=Song length
ProcedureReturn SendWinamp(mode,105)
EndProcedure
Procedure Winamp_JumpToTime(ms)
ProcedureReturn SendWinamp(ms,106)
EndProcedure
Procedure Winamp_SaveDefaultList()
ProcedureReturn SendWinamp(0,120)
EndProcedure
Procedure Winamp_SetPlayListPos(pos)
ProcedureReturn SendWinamp(pos,121)
EndProcedure
Procedure Winamp_SetVolume(vol)
ProcedureReturn SendWinamp(vol,122)
EndProcedure
Procedure Winamp_SetPanning(pan)
ProcedureReturn SendWinamp(pan,123)
EndProcedure
Procedure Winamp_GetListLength()
ProcedureReturn SendWinamp(0,124)
EndProcedure
Procedure Winamp_GetListPos()
ProcedureReturn SendWinamp(0,125)
EndProcedure
Procedure Winamp_GetInfo(mode);0 Samplerate, 1=Bitrate; 2=Channels
ProcedureReturn SendWinamp(mode,126)
EndProcedure
Procedure Winamp_GetEQData(pos)
; Value Meaning
; ------------------
; 0-9 The 10 bands of EQ Data. 0-63 (+20db - -20db)
; 10 The preamp value. 0-63 (+20db - -20db)
; 11 Enabled. zero If disabled, nonzero If enabled.
; 12 Autoload. zero If disabled, nonzero If enabled.
ProcedureReturn SendWinamp(pos,127)
EndProcedure
Procedure Winamp_SetEQData(pos)
ProcedureReturn SendWinamp(pos,128)
EndProcedure
Procedure Winamp_AddBookmark(name$)
ProcedureReturn SendWinamp(@name$,129)
EndProcedure
Procedure Winamp_Restart()
ProcedureReturn SendWinamp(0,135)
EndProcedure
Procedure Winamp_MBopen(url$)
ProcedureReturn SendWinamp(@url$,136)
EndProcedure
Procedure Winamp_PlayFile(name$)
ProcedureReturn CopyWinamp(100,@name$,Len(name$)+1)
EndProcedure
Procedure Winamp_ChDir(dir$)
ProcedureReturn CopyWinamp(103,@di$,Len(dir$)+1)
EndProcedure
Procedure.s Winamp_GetCurrentTitle()
If hwnd_Winamp_
adr=AllocateMemory(#MAX_PATH+1000);AllocateMemory(#Winamp_memoryid,2048)
GetWindowText_(hwnd_Winamp_,adr,#MAX_PATH+999)
a$=PeekS(adr):a$=Left(a$,FindString(a$," - Winamp",0))
a=FindString(a$,". ",0)+2
a$=Mid(a$,a,Len(a$)-a+1)
FreeMemory(adr)
ProcedureReturn a$
Else
ProcedureReturn ""
EndIf
EndProcedure
hwnd_winamp_ = FindWindow_("Winamp v1.x",0)
If hwnd_winamp_ = 0
MessageRequester("Error","Winamp are not running",0)
End
EndIf
;Form size
;------------------------------------------
Global OldTitle.s
Global IsPlayAll
Global BlankTiming.i
IsPlayAll=#False : BlankTiming=6
#WindowHeight = 350
#WindowWidth = 600
If OpenWindow(0,0,0, #WindowWidth, #WindowHeight,"Woody's Winamp API", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
;CONTROLS: (GADGETS)
; ------------------------------------------
AddWindowTimer(0, 99, 1000)
If LoadFont(100,"Courier",10, #PB_Font_Bold)
SetGadgetFont(1, FontID(100))
EndIf
TextGadget(10,10,10,580,20,"Current Title")
TextGadget(11,20,25,400,20,"---")
TextGadget(12,20,40,400,20,"---")
TextGadget(13,20,280,400,20,"---")
TextGadget(14,20,300,400,30,"---")
ButtonGadget(22,200,100,150,70,"PLAY ONLY CURRENT")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Timer And EventTimer = 0
If Winamp_IsPlaying()=1
strTitle.s = Winamp_GetCurrentTitle() + Space(10)
strPos.i = Winamp_GetListPos() + 1
EndIf
If strTitle<>""
SetGadgetText(11, strTitle)
Else
SetGadgetText(11, "STOP")
EndIf
SetGadgetText(12,"Pos. "+strPos)
EndIf
If EventID = #PB_Event_Gadget And EventGadget() = 22
file2play.s="WoodyMix-Leo (2021).mp4"
Winamp_ClearFilelist()
Winamp_PlayFile(file2play)
EndIf
Until EventID = #PB_Event_CloseWindow
End