![]() |
Tipp 0389
|
Soundkarten-Informationen ermitteln
|
 |
|
Autor/Einsender: Datum: |
|
Alexander Csadek 30.03.2004 |
|
Entwicklungsumgebung:
DirectX-Version: |
|
VB 6
DirectX 8 |
|
|
Es kommt sicher nicht sehr häufig vor, dass in einem PC mehr als eine Soundkarte ist. Aber dennoch ist es mit
DirectX möglich festzustellen, ob überhaupt eine Soundkarte vorhanden ist.
|
Dies geschieht mittels der DirectSound-Enummerierung. Die Funktion GetDSEnum liefert eine Auflistung aller installierten Soundkarten inkl. deren Soundtreiber.
Am häufigsten gibt es nur eine und diese wird als "Primärer Soundtreiber" bezeichnet. Und DirectSound wird dann ohne Angabe der GUID
erstellt:
|
DirectX8.DirectSoundCreate("")
|
Soll die Ausgabe aber auf einer anderen Soundkarte als der primären
erfolgen oder über einen anderen Treiber, so muss lediglich die GUID
aus der Auflistung anstatt
des leeren Strings übergeben werden, also zum Beispiel
|
DirectX8.DirectSoundCreate(objDSE.GetGuid(3))
|
Das gleiche gilt auch für die Aufnahmetreiber (Capture). Diese können mit der Funktion GetDSCaptureEnum ausgelesen werden.
|
|
|
Option Explicit
Dim objDX8 As New DirectX8
Dim objDSE As DirectSoundEnum8
Dim objDSCE As DirectSoundEnum8
Private Sub Form_Load()
Dim i As Single
On Error GoTo ERROUT
Set objDSE = objDX8.GetDSEnum
lbl_Device.Caption = "Anzahl Soundkartentreiber: " & _
objDSE.GetCount
lst_SK.Clear
For i = 1 To objDSE.GetCount
lst_SK.AddItem objDSE.GetDescription(i) & _
" - " & objDSE.GetName(i) & " - " & _
objDSE.GetGuid(i)
Next i
lst_SK.ListIndex = 0
Set objDSCE = objDX8.GetDSCaptureEnum
lbl_Capture.Caption = "Anzahl Aufnahmetreiber: " & _
objDSCE.GetCount
lst_Capture.Clear
For i = 1 To objDSCE.GetCount
lst_Capture.AddItem objDSCE.GetDescription(i) & _
" - " & objDSCE.GetName(i) & " - " & _
objDSCE.GetGuid(i)
Next i
lst_Capture.ListIndex = 0
Exit Sub
ERROUT:
MsgBox "Fehler beim Einlesen der Soundkarten.", vbExclamation
End
End Sub
Private Sub cmd_Close_Click()
DXClose
End Sub
Private Sub DXClose()
Set objDSE = Nothing
Set objDSCE = Nothing
Set objDX8 = Nothing
End
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UloadMode As Integer)
DXClose
End Sub
|
|
|
|
Um dieses Beispiel ausführen zu können, wird die DirectX 8
for Visual Basic Type Library
benötigt (siehe dazu die Erläuterungen in der DirectX-Rubrik).
|
|
Windows-Version |
95 |
 |
|
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
VB-Version |
VBA 5 |
 |
|
VBA 6 |
 |
|
VB 4/16 |
 |
|
VB 4/32 |
 |
|
VB 5 |
 |
|
VB 6 |
 |
|
|
|
Download (2,8
kB)
|
Downloads bisher: [ 429 ]
|
|
|