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
 
Hinweis
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 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 6. September 2011