Note it puts the .Wav name in the Clipboard.

Send remarks to

'               PBWIN 9.00 - WinApi 05/2008 - XP Pro SP3
#Dim All 
#Compile Exe  
#Include "WIN32API.INC"
  Global hdlg As Dword                
  Global Sounds$(), Btn_Id&() 
  Global Dlg_Hght&, Dlg_Wdth&
Macro Common_Locals 'Macro easier than retyping and maintains coding consistency
  Local ctr&, ln&, ln1&, i&, s$
  Local hght&, wd&, Longest&, l$
  Local Row&, col&
End Macro  
CallBack Function Dialog_Processor
  Select Case CbMsg     'This is TO determine the message TYPE 
     Case %WM_INITDIALOG'<- Initialiaton when the program loads 
     Case %WM_SYSCOMMAND 'Traps Any Alt key but only F4 closes              
     Case %WM_COMMAND  'This processes command messages
       Select Case CbCtl 'which control is sending msg
         Case Btn_Id(1) To Btn_Id(UBound(Btn_Id))
           Select Case CbCtlMsg 'msg sent   
              Case %bn_Clicked 'Bingo
                ctr = CbCtl - 1000 'yields array number
                 If ctr => LBound(Sounds$()) And _ 'check for bounds error JIC
                    ctr =< UBound(Sounds$()) Then
                    s$ = Sounds$(ctr) & ".wav" 'for convenience
                    SndPlaySound s$ & Chr$(0), ByVal 0
                    ClipBoard Set Text s$ To ctr 'put name in clipboard
                 End If
           End Select
       End Select
  End Select
End Function
Sub Buttons_Setup 
  Call Sound_Data 'get sounds & Button ids
  'determine Button Width
  For ctr = LBound(Sounds$()) To UBound(Sounds$())
     ln = Len(Sounds$(ctr)) 'how long is it
     If ln > Longest Then Longest = ln
  Next ctr
  Longest = Longest * 6 'pixels per character
  hght = 20 'btn height
  Col = 8 'space on left
  Row = 5 'space at top
  For ctr = LBound(Sounds$()) To UBound(Sounds$())
     Control Add Button, hdlg, Btn_Id(ctr), Sounds$(ctr), Col, Row, Longest, hght 
     Row = Row + hght + 3
     If Row > Dlg_Hght - 20 Then 'at bottom of dialog
        Row = 5 'start at top again
        Col = col + Longest + 10 'Move over Rover
     End If 
  Next ctr
End Sub
Function PBMain
  common_Locals 'not needed here but JIC
  Dlg_Hght = 12 * 28 
  Dlg_Wdth = 525
  Dialog New Pixels, hdlg, "The Sweet Sounds of XP", , , Dlg_Wdth, Dlg_Hght, %WS_SYSMENU To hdlg
  Buttons_Setup 'build buttons
     Dialog Show Modal hDlg   Call Dialog_Processor 
End Function                                
Sub Sound_Data
  ctr = DataCount 'count data items
  Dim Sounds$(1 To ctr), Btn_Id(1 To ctr)'assign arrays
  For ctr = 1 To DataCount 'now fill arrays
     S$ = Read$(ctr) 'get sound
     Sounds$(ctr) = Left$(s$, Len(s$) - 4) 'strip off ".wav"
     Btn_Id(ctr) = 1000 + ctr 'assign a button id
  Next ctr
Data chimes.wav
Data chord.wav
Data ding.wav
Data flourish.mid
Data Notify.wav
Data onestop.mid
Data recycle.wav
Data ringin.wav
Data ringout.wav
Data start.wav
Data tada.wav
Data town.mid
Data Windows Feed Discovered.wav
Data Windows Information Bar.wav
Data Windows Navigation Start.wav
Data Windows Pop-up Blocked.wav
Data Windows XP Balloon.wav
Data Windows XP Battery Critical.wav
Data Windows XP Battery Low.wav
Data Windows XP Critical Stop.wav
Data Windows XP Default.wav
Data Windows XP Ding.wav
Data Windows XP Error.wav
Data Windows XP Exclamation.wav
Data Windows XP Hardware Fail.wav
Data Windows XP Hardware Insert.wav
Data Windows XP Hardware Remove.wav
Data Windows XP Information Bar.wav
Data Windows XP Logoff Sound.wav
Data Windows XP Logon Sound.wav
Data Windows XP Menu Command.wav
Data Windows XP Minimize.wav
Data Windows XP Notify.wav
Data Windows XP Pop-up Blocked.wav
Data Windows XP Print complete.wav
Data Windows XP Recycle.wav
Data Windows XP Restore.wav
Data Windows XP Ringin.wav
Data Windows XP Ringout.wav
Data Windows XP Shutdown.wav
Data Windows XP Start.wav
Data Windows XP Startup.wav
End Sub