WinAmp PlayFile ne recoit qu'un caractere

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
ElwoOOod
Messages : 15
Inscription : lun. 28/juil./2014 13:15

WinAmp PlayFile ne recoit qu'un caractere

Message par ElwoOOod »

salut a tous,
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 
dans ce cas de figure, WinAmp efface bien la playlist et ajoute uniquement la lettre W dans celle-ci...