Mit Hilfe vom DirectX SDK ein selectedDevice setzen.
Hi Admins,
ich habe im Rahmen eines kleinen Projektes ein Programm geschrieben, welches mir derzeit meine Audio Ausgabegeräte anzeigt.
Das habe ich mit Hilfe des DirectX SDK geschafft. Ich habe auf DirectX und DirectX.DirectSound verwiesen.
Nun kann ich mir meine ganzen Ausgabegeräte anzeigen lassen (TV via HDMI, Lautsprecher via Klinke und Headset via USB). Diese kann ich auch auswählen, aber noch nicht setzen. gibt es da vielleicht ein "setSoundDevice" oder sowas ähnliches? Wurde in der Doku von DirektX leider nicht fündig.
Hier nochmal der Code:
Ihr müsst mir nicht unbedingt den code schreiben, aber Hinweise, wie ich das hinbekommen könnte wären echt cool.
Vielen Dank im voraus.
MfG,
Sudden
ich habe im Rahmen eines kleinen Projektes ein Programm geschrieben, welches mir derzeit meine Audio Ausgabegeräte anzeigt.
Das habe ich mit Hilfe des DirectX SDK geschafft. Ich habe auf DirectX und DirectX.DirectSound verwiesen.
Nun kann ich mir meine ganzen Ausgabegeräte anzeigen lassen (TV via HDMI, Lautsprecher via Klinke und Headset via USB). Diese kann ich auch auswählen, aber noch nicht setzen. gibt es da vielleicht ein "setSoundDevice" oder sowas ähnliches? Wurde in der Doku von DirektX leider nicht fündig.
Hier nochmal der Code:
'Pruefen ob eine Soundkarte im System installiert ist und auflisten der vorhandenen Soundkarten
Option Explicit On
Option Strict On
Imports Microsoft.DirectX
Imports Microsoft.DirectX.DirectSound
Public Class Form1
' List der vorhandenen Soundkarten im System ermitteln
Public Class GetSoundDevices
' Rueckgabe der gefundenen Soundkarten
Public Shared ReadOnly Property DeviceList() As List(Of String)
Get
Return GetDeviceList()
End Get
End Property
' Soundkarten ermitteln
' Rueckgabe der gefundenen Soundkarten an eine List(...)
Private Shared Function GetDeviceList() As List(Of String)
Dim List As New List(Of String)
Dim DeviceList As New DevicesCollection
Try
Dim n As Integer = 0
Do While n < DeviceList.Count
List.Add(DeviceList(n).Description)
n += 1
Loop
Catch ex As Exception
Throw New Exception(ex.Message.ToString())
End Try
Return List
End Function
End Class
' Pruefen ob im System eine Soundkarte installiert ist
Public Class DirectX_SoundkarteInstalliert
' Rueckgabe ob eine Soundkarte gefunden wurde. True - es wurde eine Soundkarte gefunden sonst False
Public Shared ReadOnly Property SoundkarteInstalliert() As Boolean
Get
Return GetSoundCard()
End Get
End Property
' Soundkarten ermitteln
Private Shared Function GetSoundCard() As Boolean
Dim Result As Boolean = False
Try
Dim Device As DirectSound.Device = New DirectSound.Device()
If Device = Nothing Then
Result = False
Else
Result = True
End If
Catch ex As Exception
Throw New Exception(ex.Message.ToString())
End Try
Return Result
End Function
End Class
' Initialisierung
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
With Me
.CenterToScreen()
.Text = "Auf Soundkarte pruefen"
With Me.Button1
.Text = "Test"
End With
End With
End Sub
' Funktionsauswertung
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
ListBox1.Items.Clear()
Try
'Ist eine Soundkarte im System vorhanden?...
Dim IstInstalliert As Boolean = DirectX_SoundkarteInstalliert.SoundkarteInstalliert()
Select Case IstInstalliert
'...wenn ja ...
Case True
'... wird versucht eine Liste der vorhandenen Geraete anzulegen...
Dim List As New List(Of String)(GetSoundDevices.DeviceList())
'... enthaelt die Liste Daten?... dann ...
If List IsNot Nothing Then
'... wird die Liste in einer Schleife durchlaufen und das Ergebnis
'in einer ComboBox aufgelistet
For Each Devices As String In List
'Me.ComboBox1.Items.Add(Devices)
Me.ListBox1.Items.Add(Devices)
Next
If Me.ListBox1.Items.Count > 0 Then
'Erstes Item in der ComboBox selektieren
Me.ListBox1.SelectedIndex = 1
End If
End If
Case Else
'... wenn keine Soundkarte gefunden werden konnte :
MessageBox.Show("Es ist keine Soundkarte installiert!", "Info")
End Select
'Eventuell auftretenden Fehler abfangen.
Catch ex As Exception
Throw New Exception(ex.Message.ToString())
End Try
End Sub
End Class
Ihr müsst mir nicht unbedingt den code schreiben, aber Hinweise, wie ich das hinbekommen könnte wären echt cool.
Vielen Dank im voraus.
MfG,
Sudden
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 234078
Url: https://administrator.de/contentid/234078
Ausgedruckt am: 26.11.2024 um 11:11 Uhr
12 Kommentare
Neuester Kommentar
-edit- unter Windows 7 scheint das ganze nicht mehr so richtig zu funktionieren, deshalb die Empfehlung der Nutzung diese Tools zum setzen des Output-Devices:
Bluetooth Audio per Powershell verbinden
Grüße Uwe
Bluetooth Audio per Powershell verbinden
Grüße Uwe
Zitat von @Sudden:
Achja, nochwas. Wenn ich mein Programm öffne steht als erstes in der Liste "Primärer Soundtreiber" kann ich
das irgendwie wegbekommen?
indem du es nicht zu deiner Liste hinzufügst (bzw. es aus deiner Liste entfernst)...Achja, nochwas. Wenn ich mein Programm öffne steht als erstes in der Liste "Primärer Soundtreiber" kann ich
das irgendwie wegbekommen?
Zitat von @Sudden:
Ich finde den .NET code nicht auf dieser seite.und die sln in der zip ann ich mit meinem Visual Studio 2008 leider nicht
öffnen.
Nimm die fertige EndPointController.exe aus dem ZIP-File. Zur Info: Das ist ein C++ Codeproject ...Ich finde den .NET code nicht auf dieser seite.und die sln in der zip ann ich mit meinem Visual Studio 2008 leider nicht
öffnen.
Zitat von @Sudden:
> Nimm die fertige EndPointController.exe aus dem ZIP-File. Zur Info: Das ist ein C++ Codeproject ...
Ich verstehe nicht was ich damit machen soll.
steht doch oben in meinem Link...Bluetooth Audio per Powershell verbinden> Nimm die fertige EndPointController.exe aus dem ZIP-File. Zur Info: Das ist ein C++ Codeproject ...
Ich verstehe nicht was ich damit machen soll.
Zum Umschalten des Outputs führst du die EndpointController.exe mit einer Nummer als Parameter aus welches Device du aktivieren willst...
(das ganze z.B. mit Process.Start)
Zitat von @Sudden:
Ahhh, perfect. jezz hab ichs gechekt. und diese controller exe kann ich dann in mein programm einbauen?
einfach mit ins Programmverzeichnis kopieren und von dort aus ausführen lassen ...Ahhh, perfect. jezz hab ichs gechekt. und diese controller exe kann ich dann in mein programm einbauen?