Ver Mensaje Individual
  #9 (permalink)  
Antiguo 03/04/2010, 12:49
Avatar de seba123neo
seba123neo
 
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 3 meses
Puntos: 19
Respuesta: Propiedades de sonido en VB6

el tema de que se corta el sonido en otras ventanas, lo podes solucionar con la api GetForegroundWindow y un Timer, algo asi:

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private Declare Function GetForegroundWindow Lib "User32" () As Long
  4.  
  5. Dim DX           As DirectX8
  6. Dim DS           As DirectSound8
  7. Dim dsToneBuffer As DirectSoundSecondaryBuffer8
  8. Dim desc         As DSBUFFERDESC
  9.  
  10. Const SRATE = 44100
  11.  
  12. Private Sub Form_Load()
  13.  
  14.     Set DX = New DirectX8
  15.     Set DS = DX.DirectSoundCreate("")
  16.     DS.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
  17.    
  18.     Timer1.Enabled = True
  19.     Timer1.Interval = 1000
  20.    
  21.     desc.fxFormat.nFormatTag = WAVE_FORMAT_PCM
  22.     desc.fxFormat.nSize = 0
  23.     desc.fxFormat.lExtra = 0
  24.     desc.fxFormat.nChannels = 1
  25.     desc.fxFormat.lSamplesPerSec = SRATE
  26.     desc.fxFormat.nBitsPerSample = 16
  27.     desc.fxFormat.nBlockAlign = 2
  28.     desc.fxFormat.lAvgBytesPerSec = 2 * SRATE
  29.     desc.lFlags = DSBCAPS_STATIC Or DSBCAPS_CTRLVOLUME Or DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN
  30.     desc.lBufferBytes = 2 * 1 * SRATE
  31.    
  32.    
  33.     Set dsToneBuffer = DS.CreateSoundBufferFromFile("C:\WINDOWS\media\Entrada de Windows XP.wav", desc)
  34.    
  35.     dsToneBuffer.SetVolume -4000 ' aca pones el volumen, fijarse en un tutorial caules son los valores aceptados por DirectX
  36.    dsToneBuffer.Play DSBPLAY_LOOPING
  37.    
  38. End Sub
  39.  
  40. Private Sub Timer1_Timer()
  41.     Dim vHwnd As Long
  42.     vHwnd = GetForegroundWindow
  43.     If vHwnd > 0 Then DS.SetCooperativeLevel vHwnd, DSSCL_NORMAL
  44. End Sub

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein