Das Beispiel stammt aus der SDK Jetaudio_control und ich habe es mehr oder weniger gut in PB umgesetzt.

Mögliche anwendung: programmierbare Fernbedinug,Informationen auf dem LCD der G15 anzeigen usw.
Code: Alles auswählen
; //////////////////////////////////////////////////////////////////////////
; //
; // How to get JetAudio window handle
; // -> m_hWndJetAudio = ::FindWindow("COWON Jet-Audio Remocon Class", "Jet-Audio Remote Control");
; //
; //////////////////////////////////////////////////////////////////////////
;
; //////////////////////////////////////////////////////////////////////////
; // Change current mode
; // wParam : CMP_CDP (Disc Mode), CMP_DGA (File Mode)
; // lParam : None
; // -> SendMessage(m_hWndJetAudio, WM_REMOCON_CHANGE_COMPONENT, CMP_DGA, 0); // change to file mode
#CMP_CDP =2
#CMP_DGA =3
#WM_REMOCON_CHANGE_COMPONENT = #WM_APP+750
; //////////////////////////////////////////////////////////////////////////
; // Constants
; //////////////////////////////////////////////////////////////////////////
#MAX_REVERB_MODE =4
#MAX_EQ_MODE =14
#MAX_REPEAT_METHOD =3
#MAX_RANDOM_METHOD =3
#MAX_TIME_METHOD =2
; //////////////////////////////////////////////////////////////////////////
; // Command
; //////////////////////////////////////////////////////////////////////////
; // Message for command. wParam is not used. For lParam, refer to Action commands below
#WM_REMOCON_SENDCOMMAND = #WM_APP+741
; //////////////////////////////////////////////////////////////////////////
; //
; // Action command
; //
; // Usage -> SendMessage(m_hWndJetAudio, WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(command, para));
; //
; //////////////////////////////////////////////////////////////////////////
; // Stop Playback
; // Para : not used
; // Return : N/A
#JRC_ID_STOP = 5102
; // Start playback
; // Para : Track Number ( >= 1 ). Use 0 for normal play/pause.
; // Return : N/A
#JRC_ID_PLAY = 5104
; // Play previous track
; // Para : not used
; // Return : N/A
#JRC_ID_PREV_TRACK = 5107
; // Play next track
; // Para : not used
; // Return : N/A
#JRC_ID_NEXT_TRACK =5108
; // RepeatMethod
; // Para : desired repeat mode (1 - 3) or 0 for next repeat mode
; // Return : current repeat mode
#JRC_ID_REPEATMODE =5112
; // Move 10 seconds backward.
; // Para : not used
; // Return : N/A
#JRC_ID_BACKWARD =5115
; // Move 10 seconds forward
; // Para : not used
; // Return : N/A
#JRC_ID_FORWARD =5116
; // RandomMode
; // Para : desired random mode (1 - 3) or 0 for next random mode
; // Return : current random mode
#JRC_ID_RANDOMMODE =5117
; // Slower playback.
; // Para : not used
; // Return : N/A
#JRC_ID_PLAY_SLOW =5128
; // Faster playback.
; // Para : not used
; // Return : N/A
#JRC_ID_PLAY_FAST =5129
; // Volume down.
; // Para : not used
; // Return : current volume (0 - 32)
#JRC_ID_VOL_DOWN =5134
; // Volume up.
; // Para : not used
; // Return : current volume (0 - 32)
#JRC_ID_VOL_UP =5135
; // This command is not used anymore.
#JRC_ID_VIDEOCD =5168
; // Exit Jet-Audio.
; // Para : not used
; // Return : N/A
#JRC_ID_EXIT =5171
; // Mute sound
; // Para : 0(Toggle), 1(ON), -1(OFF)
; // Return : current mute status
#JRC_ID_ATT =5172
; // Change main volume.
; // Para : Volume Value (0 - 100)
; // Return : current volume
#JRC_ID_SET_VOLUME =5180
; // Change timer.
; // Para : second (0 is timer off)
; // Return : N/A
#JRC_ID_SET_TIMER =5181
; // Set screen size as 1x.
; // Para : not used
; // Return : N/A
#JRC_ID_SCREEN_1X =5188
; // Set screen size as 2x.
; // Para : not used
; // Return : N/A
#JRC_ID_SCREEN_2X =5189
; // Set screen to full screen mode.
; // Para : not used
; // Return : N/A
#JRC_ID_SCREEN_FULL =5190
; // Change equalizer mode.
; // Para : desired eq mode (0 - 13) or -1 for next eq
; // Return : current eq mode
#JRC_ID_CHANGE_EQ =5191
; // Move playback position.
; // Para : New position (second)
; // Return : N/A
#JRC_ID_SEEK =5192
; // Change Reverb mode
; // Para : desired reverb mode (0 - 3) or -1 for next reverb mode
; // To turn off/on, send current reverb mode as parameter
; // Return : current reverb mode (0 - 3) or -1 if turned off
#JRC_ID_CHANGE_SFX_REVERB =5200
; // GoUp/Return (for VideoCD/DVD)
; // Para : not used
; // Return : N/A
#JRC_ID_GOUP =5202
; // Toggle screen mode between windowed / full screen mode
; // Para : not used
; // Return : 1 if full screen, 0 if windowed mode
#JRC_ID_CHANGE_SCREEN_SIZE=5205
; // Change Album sequentially
; // Para : 1 (next album) or -1 (previous album)
; // For disc mode, change drive
; // Return : N/A
#JRC_ID_CHANGE_ALBUM =5206
; // Minimize/Restore Jet-Audio
; // Para : not used
; // Return : 0:minimized or hidden, 1:normal
#JRC_ID_MINIMIZE =5701
; // Change Wide mode
; // Para : 0(Toggle), 1(ON), -1(OFF)
; // Return : current status
#JRC_ID_CHANGE_SFX_WIDE =6000
; // Change XBass mode
; // Para : 0(Toggle), 1(ON), -1(OFF)
; // Return : current status
#JRC_ID_CHANGE_SFX_XBASS =6001
; // Change BBE mode
; // Para : 0(Toggle), 1(ON), -1(OFF)
; // Return : current status
#JRC_ID_CHANGE_SFX_BBE =6002
; // Change B3D(BBE ViVA) mode
; // Para : 0(Toggle), 1(ON), -1(OFF)
; // Return : current status
#JRC_ID_CHANGE_SFX_B3D =6003
; // Show Open dialog box
; // Para : not used
; // Return : N/A
#JRC_ID_OPEN_FILES =6004
; // Eject current CD-ROM drive
; // Para : not used
; // Return : N/A
#JRC_ID_EJECT_DRIVE =6005
; // Change current CD-ROM drive
; // Para : drive letter
; // Return : N/A
#JRC_ID_SELECT_DRIVE =6006
; // Change to tray-only mode
; // Para : not used
; // Return : N/A
#JRC_ID_GOTO_TRAY =6007
; // Load album
; // Para : album index
; // Return : N/A
#JRC_ID_SELECT_ALBUM =6008
; // Refresh contents of current album
; // Para : not used
; // Return : N/A
#JRC_ID_ALBUM_REFRESH =6009
; // Sort contents of current album
; // Para : not used
; // Return : N/A
#JRC_ID_ALBUM_SORT =6010
; // Change Crossfade mode
; // Para : 0(Toggle), 1(ON), -1(OFF)
; // Return : current status
#JRC_ID_CHANGE_SFX_XFADE =6011
; // Change X-Surround mode
; // Para : 0(Toggle), 1(ON), -1(OFF)
; // Return : current status
#JRC_ID_CHANGE_SFX_XSR =6012
; //===============================DVD====================================//
; // Change DVD Language sequentially
; // Para : not used
; // Return : N/A
#JRC_ID_DVD_CHANGE_LANGUAGE =7030
; // Change DVD Subtitle sequentially
; // Para : not used
; // Return : N/A
#JRC_ID_DVD_CHANGE_SUBTITLE =7031
; // Change DVD Angle sequentially
; // Para : not used
; // Return : N/A
#JRC_ID_DVD_CHANGE_ANGLE =7032
; // Call DVD Title Menu
; // Para : not used
; // Return : N/A
#JRC_ID_DVDMENU_TITLE =7050
; // Call DVD Root Menu
; // Para : not used
; // Return : N/A
#JRC_ID_DVDMENU_ROOT =7051
; //////////////////////////////////////////////////////////////////////////
; // Status
; //////////////////////////////////////////////////////////////////////////
; // Message for status. wParam is not used. For lParam, refer to commands below
#WM_REMOCON_GETSTATUS =#WM_APP+740
; //////////////////////////////////////////////////////////////////////////
; //
; // Status command
; //
; // Usage -> return = SendMessage(m_hWndJetAudio, WM_REMOCON_GETSTATUS, 0, command);
; //
; //////////////////////////////////////////////////////////////////////////
#GET_STATUS_START =0 ; // Indicator for component commands
; // Return : MCI_MODE_PAUSE(529) or MCI_MODE_PLAY(526) or MCI_MODE_STOP(525)
#GET_STATUS_STATUS =1
; // Return : 0:Elapsed, 1:Remaining
#GET_STATUS_TIME_MODE =2
; // Return : 0:Normal, 1:Random, 2:Program
#GET_STATUS_RANDOM_MODE =3
; // Return : 0:Normal, 1:Repeat This, 2:Repeat All
#GET_STATUS_REPEAT_MODE =4
; // Get track information of current track
; // string will be returned using WM_COPYDATA message
#GET_STATUS_TRACK_INFO =5
; // Return : current speed
#GET_STATUS_SPEED =6
; // Return : number of tracks in current album
#GET_STATUS_MAX_TRACK =7
; // Return : current track number
#GET_STATUS_CUR_TRACK =8
; // Return : current playback time
#GET_STATUS_CUR_TIME =9
; // Return : length of current track (in msec)
#GET_STATUS_MAX_TIME =10
; // Get file name of current track
; // string will be returned using WM_COPYDATA message
#GET_STATUS_TRACK_FILENAME =11
; // Get title info of current track
; // string will be returned using WM_COPYDATA message
#GET_STATUS_TRACK_TITLE =12
; // Get artist info of current track
; // string will be returned using WM_COPYDATA message
#GET_STATUS_TRACK_ARTIST =13
; // Get all tracks of current album
; // string will be returned using WM_COPYDATA message
#GET_STATUS_TRACK_LIST =14
; // Get id of current album
; // string will be returned using WM_COPYDATA message
#GET_STATUS_ALBUMID =15
; // Return : current drive letter
#GET_STATUS_CUR_DRIVE =16
; // Get all drive letters of CD-ROM drives
; // string will be returned using WM_COPYDATA message
#GET_STATUS_DRIVE_LIST =17
; // Get all albums of jetaudio
; // string will be returned using WM_COPYDATA message
#GET_STATUS_ALBUM_LIST =18
; // Get album information of current album
; // string will be returned using WM_COPYDATA message
#GET_STATUS_ALBUM_INFO =19
; // for VideoCD/DVD
; // 0:Normal, 1:VCD Menu, 2:DVD Menu
#GET_STATUS_MENU_MODE =20
; // This command is not used anymore
#GET_STATUS_RUNTIME_FLAG =101
; // This command is not used anymore
#GET_STATUS_QUICKWINDOW =102
; // Get Mute status
; // Return : 0:Mute OFF, 1:Mute ON
#GET_STATUS_ATT =110
; // Get EQ mode
; // Return : 0 - 13
#GET_STATUS_EQ_MODE =111
; // Get Reverb status
; // Return : 0:OFF, 1:ON
#GET_STATUS_REVERB_FLAG =120
; // Get Reverb status
; // Return : 0 - 4
#GET_STATUS_REVERB_MODE =121
; // Get screen mode
; // Return : 0:Windowed, 1:Full screen
#GET_STATUS_SCREEN_MODE =122
; // Get Wide status
; // Return : 0:OFF, 1:ON
#GET_STATUS_WIDE_FLAG =123
; // Get X-Bass status
; // Return : 0:OFF, 1:ON
#GET_STATUS_XBASS_FLAG =124
; // Get BBE status
; // Return : 0:OFF, 1:ON
#GET_STATUS_BBE_FLAG =125
; // Get BBE ViVA status
; // Return : 0:OFF, 1:ON
#GET_STATUS_B3D_FLAG =126
; // Get Volume
; // Return : 0 - 100
#GET_STATUS_VOLUME =127
; // Get current mode
; // Return : 1:Disc mode, 0:File mode
#GET_STATUS_PLAY_MODE =128
; // Get current video disc playback mode
; // for VCD/DVD
#GET_STATUS_VCD_MODE =130 ; // 0:None, 1:VCD, 2:DVD
; // Get X-Surround status
; // Return : 0:OFF, 1:ON
#GET_STATUS_XSR_FLAG =131
; // Get Crossfade status
; // Return : 0:OFF, 1:ON
#GET_STATUS_XFADE_FLAG =132
; // Get JetAudio's version info
#GET_STATUS_JETAUDIO_VER1 =995 ; // major version number -> 6 for 6.1.7
#GET_STATUS_JETAUDIO_VER2 =996 ; // minor version number -> 1 for 6.1.7
#GET_STATUS_JETAUDIO_VER3 =997 ; // build version number -> 7 for 6.1.7
; // Get JetAudio supported API version
; // 0 : FirstVersion,
; // 1 : DVD & Album Name & Track Name supported
; // 2 : JetAudio 5
; // 3 : JetAudio 5.2 or later
#GET_STATUS_SUPPORTED_VER =999
; //////////////////////////////////////////////////////////////////////////
; // WM_COPYDATA is used for receive string information from Jet-Audio
; // For more information, refer to example source code
; //////////////////////////////////////////////////////////////////////////
#JRC_COPYDATA_ID_ALBUMNAME = $1000
#JRC_COPYDATA_ID_DRIVENAME = $1001
#JRC_COPYDATA_ID_GETVER = $1002
#JRC_COPYDATA_ID_ALBUM_CHANGED = $1003
#JRC_COPYDATA_ID_ALBUM_REMOVED = $1004
#JRC_COPYDATA_ID_ALBUM_ADDED = $1004
#JRC_COPYDATA_ID_DVD_CHAPTER = $2000
#JRC_COPYDATA_ID_DVD_LANGUAGE = $2001
#JRC_COPYDATA_ID_DVD_SUBTITLE = $2002
#JRC_COPYDATA_ID_DVD_ANGLE = $2003
#JRC_COPYDATA_ID_TRACK_FILENAME = $3000
#JRC_COPYDATA_ID_TRACK_TITLE = $3001
#JRC_COPYDATA_ID_TRACK_ARTIST = $3002
#JRC_COPYDATA_ID_TRACK_LIST = $3003
#JRC_COPYDATA_ID_ALBUMID = $3004
#JRC_COPYDATA_ID_DRIVE_LIST = $3005
#JRC_COPYDATA_ID_ALBUM_LIST = $3006
#JRC_COPYDATA_ID_ALBUM_INFO = $3007
#JRC_COPYDATA_ID_TRACK_INFO = $3008
Global Window_0
Global Text_0
Global Text_1
Global Text_2
Global Text_3
Global Text_4
Global Text_5
Global Text_6
Global Text_7
Global Text_8
Global Text_9
Global Text_10
Global Text_11
Global TrackBar_12
Global Frame3D_13
Global Button_14
Global Button_15
Global Button_16
Global Button_17
Global Button_18
Global Button_19
Global Text_20
Global Spin_21
Global CheckBox_22
Global Button_23
Global Button_24
Global ComboBox_25
Global ComboBox_26
Global Button_27
Global Button_28
Global ComboBox_29
Global Text_30
Global ComboBox_31
Global Button_32
Global Button_33
Global Button_34
Global Button_35
Structure audio
TrackInfo.l
VolumeInfo.l
TimeInfo.l
StatusInfo.l
RepeatInfo.l
RandomInfo.l
MAX_TRACK.l
CUR_TRACK.l
ALBUMID.s
TRACK_FILENAME.s
TRACK_TITLE.s
TRACK_ARTIST.s
EndStructure
Global m_hWndJetAudio = FindWindow_("COWON Jet-Audio Remocon Class", "Jet-Audio Remote Control")
Global jet.audio
With jet
\TrackInfo=-1
\VolumeInfo=-1
\TimeInfo=-1
\StatusInfo=-1
\RepeatInfo=-1
\RandomInfo=-1
\MAX_TRACK=-1
\CUR_TRACK=-1
\ALBUMID="-1"
\TRACK_FILENAME="-1"
\TRACK_TITLE="-1"
\TRACK_ARTIST="-1"
EndWith
Procedure MAKELPARAM(hiword,loword)
ProcedureReturn ((hiword &$FFFF)+loword<<16)
EndProcedure
Procedure Update_TrackInfo()
Static active_Item
If m_hWndJetAudio= #False
ProcedureReturn 0
EndIf
SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_TRACK_FILENAME);
SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_TRACK_TITLE);
SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_TRACK_ARTIST);
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_CUR_TRACK)
If active_Item <>l
active_Item=l
SetGadgetText(Text_2,Str(l))
SetGadgetState(ComboBox_31,active_Item-1)
EndIf
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_MAX_TRACK)
If l
jet\MAX_TRACK=l
SetGadgetText(Text_4,Str(l))
EndIf
EndProcedure
Procedure Update_VolumeInfo()
If m_hWndJetAudio= #False
ProcedureReturn 0
EndIf
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_VOLUME)
If l<>jet\VolumeInfo
jet\VolumeInfo=l
SetGadgetState(Spin_21,l)
SetGadgetText(Spin_21, Str(l))
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_ATT)
SetGadgetState(CheckBox_22,l)
EndIf
EndProcedure
Procedure Update_StatusInfo()
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_STATUS)
If l<>jet\StatusInfo
jet\StatusInfo=l
Select l
Case #MCI_MODE_PLAY
SetGadgetText(Text_5,"Playing")
Case #MCI_MODE_PAUSE
SetGadgetText(Text_5,"Paused")
Case #MCI_MODE_STOP
SetGadgetText(Text_5,"Stopped")
Default
SetGadgetText(Text_5,"")
EndSelect
EndIf
EndProcedure
Procedure Update_TimeInfo()
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_MAX_TIME)
l/1000
If l <> jet\TimeInfo
jet\TimeInfo=l
SetGadgetAttribute(TrackBar_12,#PB_TrackBar_Maximum,l)
EndIf
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_CUR_TIME)
l/1000
SetGadgetState(TrackBar_12,l)
SetGadgetText(Text_11,Str(l/60)+":"+Str(l%60))
EndProcedure
Procedure Update_RandomInfo()
If m_hWndJetAudio= #False
ProcedureReturn 0
EndIf
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, 0, #GET_STATUS_RANDOM_MODE)
If l <> jet\RandomInfo
jet\RandomInfo=l
SetGadgetState(ComboBox_26,l)
EndIf
EndProcedure
Procedure Update_RepeatInfo()
If m_hWndJetAudio= #False
ProcedureReturn 0
EndIf
If l <> jet\RepeatInfo
jet\RepeatInfo=l
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, 0, #GET_STATUS_REPEAT_MODE)
SetGadgetState(ComboBox_25,l)
EndIf
EndProcedure
Procedure Update_Tracks()
SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_ALBUMID)
EndProcedure
Procedure Update_PlayMode()
If m_hWndJetAudio= #False
ProcedureReturn 0
EndIf
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, 0, #GET_STATUS_PLAY_MODE)
If l=0
SetGadgetState(Button_27,1)
SetGadgetState(Button_28,0)
DisableGadget(ComboBox_29, 1)
ElseIf l=1
SetGadgetState(Button_27,0)
SetGadgetState(Button_28,1)
DisableGadget(ComboBox_29, 0)
SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_DRIVE_LIST)
EndIf
EndProcedure
Procedure.l Callback(hwnd, msg, wParam, lParam)
Static ALBUMNAME.s
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_COPYDATA
*pp.COPYDATASTRUCT =lParam
Select *pp\dwData
Case #JRC_COPYDATA_ID_TRACK_FILENAME
If jet\TRACK_FILENAME <>PeekS(*pp\lpData)
jet\TRACK_FILENAME =PeekS(*pp\lpData)
SetGadgetText(Text_1,jet\TRACK_FILENAME )
EndIf
Case #JRC_COPYDATA_ID_TRACK_TITLE
If jet\TRACK_TITLE <>PeekS(*pp\lpData)
jet\TRACK_TITLE =PeekS(*pp\lpData)
SetGadgetText(Text_7, jet\TRACK_TITLE)
EndIf
Case #JRC_COPYDATA_ID_TRACK_ARTIST
If jet\TRACK_ARTIST <>PeekS(*pp\lpData)
jet\TRACK_ARTIST =PeekS(*pp\lpData)
SetGadgetText(Text_9, jet\TRACK_ARTIST)
EndIf
Case #JRC_COPYDATA_ID_ALBUMID
str.s= PeekS(*pp\lpData)
If str<>jet\ALBUMID
jet\ALBUMID=str
SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS,WindowID(Window_0), #GET_STATUS_TRACK_LIST)
Update_PlayMode()
EndIf
Case #JRC_COPYDATA_ID_TRACK_LIST
Count=jet\MAX_TRACK
dat=*pp\lpData
ClearGadgetItemList(ComboBox_31)
For i=0 To Count-1
txt.s= PeekS(dat)
If txt="0" ; Listende erreicht
Break
Else
AddGadgetItem(ComboBox_31, -1,txt)
EndIf
dat+Len(txt)+1 ; doppel 0 terminierter String deshalb +1
Next
l = SendMessage_(m_hWndJetAudio, #WM_REMOCON_GETSTATUS, WindowID(Window_0), #GET_STATUS_CUR_TRACK)
If l<> jet\CUR_TRACK
jet\CUR_TRACK=l
SetGadgetState(ComboBox_31,l-1)
EndIf
EndSelect
result = #True
EndSelect
ProcedureReturn result
EndProcedure
Procedure OpenWindow_Window_0()
Window_0 = OpenWindow(#PB_Any, 406, 150, 618, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
If Window_0
If CreateGadgetList(WindowID(Window_0))
Text_0 = TextGadget(#PB_Any, 5, 10, 150, 15, "File Name/Track")
Text_1 = TextGadget(#PB_Any, 165, 5, 445, 20, "", #PB_Text_Border|#PB_Text_Center)
Text_2 = TextGadget(#PB_Any, 165, 30, 90, 20, "", #PB_Text_Border|#PB_Text_Center)
Text_3 = TextGadget(#PB_Any, 270, 30, 30, 15, "of", #PB_Text_Center)
Text_4 = TextGadget(#PB_Any, 310, 30, 85, 20, "", #PB_Text_Border|#PB_Text_Center)
Text_5 = TextGadget(#PB_Any, 435, 30, 175, 20, "", #PB_Text_Border|#PB_Text_Center)
Text_6 = TextGadget(#PB_Any, 0, 55, 155, 15, "Titel:")
Text_7 = TextGadget(#PB_Any, 165, 55, 445, 20, "", #PB_Text_Border|#PB_Text_Center)
Text_8 = TextGadget(#PB_Any, 0, 80, 155, 15, "Artist:")
Text_9 = TextGadget(#PB_Any, 165, 80, 445, 20, "", #PB_Text_Border|#PB_Text_Center)
Text_10 = TextGadget(#PB_Any, 0, 105, 155, 15, "Time:")
Text_11 = TextGadget(#PB_Any, 165, 105, 80, 20, "", #PB_Text_Border|#PB_Text_Center)
TrackBar_12 = TrackBarGadget(#PB_Any, 255, 105, 355, 20, 0, 100)
Frame3D_13 = Frame3DGadget(#PB_Any, 0, 130, 615, 120, "", #PB_Frame3D_Double)
Button_14 = ButtonGadget(#PB_Any, 45, 145, 65, 25, "Previous")
Button_15 = ButtonGadget(#PB_Any, 140, 145, 65, 25, "Rewind")
Button_16 = ButtonGadget(#PB_Any, 245, 145, 65, 25, "Stop")
Button_17 = ButtonGadget(#PB_Any, 340, 145, 65, 25, "Play/Pause")
Button_18 = ButtonGadget(#PB_Any, 445, 145, 65, 25, "FF")
Button_19 = ButtonGadget(#PB_Any, 535, 145, 65, 25, "Next")
Text_20 = TextGadget(#PB_Any, 5, 205, 140, 15, "Volume:")
Spin_21 = SpinGadget(#PB_Any, 160, 200, 55, 20, 0, 100)
SetGadgetState(Spin_21,0):SetGadgetText(Spin_21, "0")
CheckBox_22 = CheckBoxGadget(#PB_Any, 245, 200, 65, 20, "Mute")
Button_23 = ButtonGadget(#PB_Any, 445, 210, 65, 20, "Open...")
Button_24 = ButtonGadget(#PB_Any, 535, 210, 60, 20, "Eject")
ComboBox_25 = ComboBoxGadget(#PB_Any, 5, 265, 115, 100)
AddGadgetItem(ComboBox_25,-1,"No Repeat")
AddGadgetItem(ComboBox_25,-1,"Repeat This")
AddGadgetItem(ComboBox_25,-1,"Repeat All")
SetGadgetState(ComboBox_25,1)
ComboBox_26 = ComboBoxGadget(#PB_Any, 135, 265, 125, 100)
AddGadgetItem(ComboBox_26,-1,"No Random")
AddGadgetItem(ComboBox_26,-1,"Random")
AddGadgetItem(ComboBox_26,-1,"Program")
SetGadgetState(ComboBox_26,1)
Button_27 = ButtonGadget(#PB_Any, 280, 265, 85, 20, "File Mode", #PB_Button_Toggle)
SetGadgetState(Button_27,1)
Button_28 = ButtonGadget(#PB_Any, 380, 265, 85, 20, "Disc Mode", #PB_Button_Toggle)
ComboBox_29 = ComboBoxGadget(#PB_Any, 485, 265, 115, 100)
DisableGadget(ComboBox_29, 1)
Text_30 = TextGadget(#PB_Any, 5, 315, 135, 15, "Tracks")
ComboBox_31 = ComboBoxGadget(#PB_Any, 150, 310, 450, 100)
Button_32 = ButtonGadget(#PB_Any, 5, 370, 130, 20, "Run JetAudio")
Button_33 = ButtonGadget(#PB_Any, 160, 370, 130, 20, "Close JetAudio")
Button_34 = ButtonGadget(#PB_Any, 320, 370, 130, 20, "Minimize/Restore")
Button_35 = ButtonGadget(#PB_Any, 475, 370, 130, 20, "Goto Tray/Restore")
EndIf
EndIf
EndProcedure
Procedure Update()
m_hWndJetAudio = FindWindow_("COWON Jet-Audio Remocon Class", "Jet-Audio Remote Control")
Update_TrackInfo()
Update_VolumeInfo()
Update_TimeInfo()
Update_StatusInfo()
Update_RepeatInfo()
Update_RandomInfo()
Update_Tracks()
EndProcedure
OpenWindow_Window_0()
SetWindowCallback(@Callback())
SetTimer_(WindowID(Window_0),3,500,@Update())
Repeat
evt=EventType()
Select WaitWindowEvent(20)
Case #PB_Event_Gadget
Select EventGadget()
Case TrackBar_12
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(#JRC_ID_SEEK, GetGadgetState(TrackBar_12)))
Case Button_14
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_PREV_TRACK)
Case Button_15
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_BACKWARD)
Case Button_16
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_STOP)
Case Button_17
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_PLAY)
Case Button_18
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_FORWARD)
Case Button_19
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_NEXT_TRACK)
Case Spin_21
SetGadgetText(Spin_21, Str(GetGadgetState(Spin_21)))
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(#JRC_ID_SET_VOLUME, GetGadgetState(Spin_21)))
Case CheckBox_22
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_ATT)
Case Button_23
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_OPEN_FILES)
Case Button_24
Case ComboBox_25
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(#JRC_ID_REPEATMODE, GetGadgetState(ComboBox_25)+1))
Case ComboBox_26
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(#JRC_ID_RANDOMMODE, GetGadgetState(ComboBox_26)+1))
Case Button_27
SetGadgetState(Button_28,0)
DisableGadget(ComboBox_29, 1)
SendMessage_(m_hWndJetAudio, #WM_REMOCON_CHANGE_COMPONENT, #CMP_DGA, 0)
Case Button_28
SetGadgetState(Button_27,0)
DisableGadget(ComboBox_29, 0)
SendMessage_(m_hWndJetAudio, #WM_REMOCON_CHANGE_COMPONENT, #CMP_CDP, 0)
Case ComboBox_29
Case ComboBox_31
If active_Item <> GetGadgetState(ComboBox_31) Or active_Item <> (jet\CUR_TRACK -1)
active_Item = GetGadgetState(ComboBox_31)
jet\CUR_TRACK=active_Item+1
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(#JRC_ID_PLAY, jet\CUR_TRACK ))
EndIf
Case Button_32
ShellExecute_(hwnd, "open", "jetaudio.exe", #Null, #Null, #SW_SHOWDEFAULT)
Case Button_33
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, #JRC_ID_EXIT)
Case Button_34
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(#JRC_ID_MINIMIZE, 0))
Case Button_35
SendMessage_(m_hWndJetAudio, #WM_REMOCON_SENDCOMMAND, 0, MAKELPARAM(#JRC_ID_GOTO_TRAY, 0))
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case Window_0
CloseWindow(Window_0)
Window_0 = 0
Break
EndSelect
EndSelect
ForEver