2012-06-09 3 views
1

Мне нужно воспроизвести звук (.WAV-файл) из приложения Visual Basic 6. Однако ПК оснащен несколькими звуковыми картами, и пользователь должен иметь возможность использовать его.Как воспроизводить аудио через определенную звуковую карту?

До сих пор звуковая карта по умолчанию была поддержана, и я играл бы звучать так:

CommandString = "Open " & Chr$(34) & mstrFilename & Chr$(34) & " type waveaudio alias MediaFile" 
mciSendString CommandString, vbNullString, 0, 0& 

If PlayFromPercent <= 0 Then 
    CommandString = "play MediaFile" 
    lngRetcode = mciSendString(CommandString, vbNullString, 0, 0&) 
Else 
    CommandString = "play MediaFile from " & CLng(lngLength * (PlayFromPercent/100)) 
    lngRetcode = mciSendString(CommandString, vbNullString, 0, 0&) 
End If 

Есть ли способ, чтобы адаптировать этот код для конкретной звуковой карты или есть другой подход, который я мог бы (например, DirectX или коммерческая Третья партийная библиотека)?

бонус, если подход поддерживает воспроизведение файла с определенной позиции (как вы можете видеть, код выше его поддерживает)

ответ

1

Это может работать; звоните mciSendCommand() с MCI_SET & MCI_WAVE_SET_PARMSwOutput на идентификатор желаемого устройства воспроизведения.

  • Вы можете получить IDDevice для mciSendCommand() через mciGetDeviceID("waveaudio")
  • Ее не 100% ясно, что wOutput хочет, его, вероятно, тот же идентификатор, возвращаемый waveOutGetDevCaps()