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