背景相關聯如何將一個USB耳機麥克風和耳機/揚聲器
我需要顯示在軟電話應用連接耳機(組合麥克風和耳機)的列表。爲了測試我有以下設備:
- 的Jabra PRO 9470
- 繽特力BT300M
- 羅技G430遊戲耳機
用戶應該能夠從ComboBox
選擇耳機,而不選擇麥克風和耳機分開。
信息
我知道在哪裏可以找到有關的麥克風和耳機的信息(在Windows中),但我一直無法使用WMI
或MMDevice API
得到它。
要找到信息,請右鍵單擊任務欄右側的Sound
(揚聲器圖標),然後選擇Playback devices
。
- 打開屬性通過雙擊窗口或點擊
Properties
。 - 單擊屬性窗口上的
Properties
按鈕。 - 單擊
Details
選項卡,然後在ComboBox
中查找Children
屬性。
這會給我提供以下信息:
SWD\MMDEVAPI\{0.0.0.00000000}.{f2e09e37-8389-46c4-8b2b-53e08b874399}
SWD\MMDEVAPI\{0.0.1.00000000}.{3402ee6e-d862-47ca-8ab8-bb8254216032}
第一行符合我Headset Earphone (Jabra PRO 9470)
和第二Headset Microphone (Jabra PRO 9470)
。
要在C#中獲得相同的信息,我需要遍歷Win32_USBControllerDevice類並輸出包含「MMDEVAPI」的所有值。在我的電腦上,它會返回6個值(3個麥克風,3個耳機)。
foreach (var device in new ManagementObjectSearcher("SELECT * FROM Win32_USBControllerDevice").Get())
{
foreach (var property in device.Properties)
{
// Gets the value of the property on the device.
var value = property.Value == null ? string.Empty : property.Value.ToString();
if (value.IndexOf("mmdevapi", StringComparison.OrdinalIgnoreCase) > -1)
{
// Output connected USB microphones and earphones.
Console.WriteLine(property.Value);
}
}
}
僅供參考,上面的代碼將輸出:
\\PC9018\root\cimv2:Win32_PnPEntity.DeviceID="SWD\\MMDEVAPI\\{0.0.0.00000000}.{F2E09E37-8389-46C4-8B2B-53E08B874399}"
\\PC9018\root\cimv2:Win32_PnPEntity.DeviceID="SWD\\MMDEVAPI\\{0.0.1.00000000}.{3402EE6E-D862-47CA-8AB8-BB8254216032}"
\\PC9018\root\cimv2:Win32_PnPEntity.DeviceID="SWD\\MMDEVAPI\\{0.0.0.00000000}.{985F2B5C-2EE2-4733-BBD6-48BFDE2D5582}"
\\PC9018\root\cimv2:Win32_PnPEntity.DeviceID="SWD\\MMDEVAPI\\{0.0.1.00000000}.{71D824EA-DAE9-4F0D-B673-4425385E3777}"
\\PC9018\root\cimv2:Win32_PnPEntity.DeviceID="SWD\\MMDEVAPI\\{0.0.0.00000000}.{D29C0970-D515-4F91-9924-F0063CF1A196}"
\\PC9018\root\cimv2:Win32_PnPEntity.DeviceID="SWD\\MMDEVAPI\\{0.0.1.00000000}.{C4B331E2-C56B-4D9B-A486-2ED6C11FDB8C}"
問題
我現在最大的問題是,我該如何正確的耳機麥克風和耳機成Headset
關聯目的?
的嘗試
我試圖尋找谷歌和StackOverflow的答案或提示,但我無法找到使用WMI
或MMDevice API
麥克風和耳機之間的共同點或關係。
如果創建一個Dictionary<string, List<string>>
其中Key
是一些獨特的物理設備或USB接口的方式,並且Value
是相關Win32_PnPEntity.DeviceID
的列表,然後我找不到它。
在星球大戰幾天精神日「 幫助我,StackOverflow上你是我唯一的希望」