Winamp API

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Winamp API

Beitrag von TomS »

Hallihallo.

Ich hab das beim Stöbern auf diversen Websites entdeckt und gleich mal nach PB konvertiert (Originalsprache weiß ich gar nimmer).

Sollte alles einwandfrei laufen mit PB 4.

Vielleicht kann's einer gebrauchen.

MfG, TomS

Code: Alles auswählen


Global WINAMPWINDOWTITLE$
Procedure.l EnumProcedure(WindowHandle.l, Parameter.l) 
  Title$ = Space(200) 
  GetWindowText_(WindowHandle, @Title$, 200) 
  If FindString(Title$, " - Winamp", 1) <> 0 
  WINAMPWINDOWTITLE$ = Title$
    ProcedureReturn 0 
  Else 
    ProcedureReturn 1 
  EndIf   
EndProcedure ;// Fenstertitel des Winampwindow um später das Handle zu ermitteln


 
    Global WinampHnd
    EnumWindows_(@EnumProcedure(), 0) 
    WinampHnd = FindWindow_(0, WINAMPWINDOWTITLE$) ;// Handle vom Winamp anhnad von Fenstertitel ermitteln (Aus dem CodeArchiv)

    ;#==>> Playerkontrollfunktionen <<==#;
    
    Procedure  Play();   
    SendMessage_(WinampHnd, #WM_COMMAND, 40045, 0); 
    EndProcedure 
    
    Procedure  Stop();
    SendMessage_(WinampHnd, #WM_COMMAND, 40047, 0); 
    EndProcedure
    
    Procedure  Pause();  
    SendMessage_(WinampHnd, #WM_COMMAND, 40046, 0);
    EndProcedure     
    
    Procedure  NextTrack();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40048, 0); 
    EndProcedure
    
    Procedure  PreviousTrack();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40044, 0); 
    EndProcedure
    
    Procedure  Forward5Seconds();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40148, 0); 
    EndProcedure 
    
    Procedure  Back5Seconds();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40144, 0); 
    EndProcedure
    
    Procedure  StartOfPlayList();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40154, 0);
    EndProcedure
    
    Procedure  VolumeUp();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40058, 0);
    EndProcedure
    
    Procedure  VolumeDown();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40059, 0);
    EndProcedure
    
    Procedure  FadeOutStop();     
    SendMessage_(WinampHnd, #WM_COMMAND, 40147, 0);
    EndProcedure
    
    ;#==>> Playerstatusfunktionen <<==#;

    Procedure.s  getSongPosition()   
    TempInt=SendMessage_(WinampHnd,#WM_USER,0,105);
    a = TempInt/1000
    m=Int(a/60)
    While Int(a/60)>0
    a-60
    Wend
    n=Int(a)
    n$=Str(n)
    If Len(n$)=1
    n$="0"+n$
    EndIf 
    ProcedureReturn Str(m)+":"+n$
    EndProcedure         
    
    
    Procedure.s  getSongLength()
    TempInt = SendMessage_(WinampHnd,#WM_USER,1,105);
    a= TempInt 
    m=Int(a/60)
    While Int(a/60)>0
    a-60
    Wend
    n=Int(a)
    n$=Str(n)
    If Len(n$)=1
    n$="0"+n$
    EndIf 
    ProcedureReturn Str(m)+":"+n$
    EndProcedure 
    

    Procedure.s  getSongSampleRate()
    Result.s = Str(SendMessage_(WinampHnd,#WM_USER,0,126));
    ProcedureReturn Result
    EndProcedure 
    
    
    Procedure.s  getSongBitRate() ;in KiloHertz
    Result.s = Str(SendMessage_(WinampHnd,#WM_USER,1,126));
    ProcedureReturn Result
    EndProcedure 
    
    
    Procedure.s  getSongChannels()
    Result.s = Str(SendMessage_(WinampHnd,#WM_USER,2,126));
    ProcedureReturn Result
    EndProcedure 
    
    
   Procedure.s getPlayListLength()
    Result.s = Str(SendMessage_(WinampHnd,#WM_USER,0,124));
   ProcedureReturn Result
   EndProcedure    
  
    
    Procedure.s  getPlayListPosition()
    TempInt = SendMessage_(WinampHnd,#WM_USER,0,125);
    If Val(getPlayListLength()) <1 
    Result.s = Str(TempInt)
    Else
    Result.s = Str(TempInt +1);
    EndIf 
    ProcedureReturn Result
    EndProcedure 
    

    Procedure.s GetCurrentTitle()
    str$=ReplaceString(WINAMPWINDOWTITLE$,"- WINAMP","",1,0)
    str$=ReplaceString(str$,getplaylistposition()+".","")
    ProcedureReturn Trim(str$)
    EndProcedure 
   

    SongState = SendMessage_(WinampHnd,#WM_USER,0,104);   
;   1: SongState= playing
;   0: SongState= stopped
;   3: SongState= paused

;#EOF