簡體   English   中英

啟用和禁用播放和記錄設備

[英]Enabling and disabling playback and recording devices

我是C#的新手。.如果這個問題有點愚蠢,請不要因為我的問題而煩惱。

我需要通過c#代碼查看已禁用的播放和記錄設備,並根據需要啟用或禁用它。 我該怎么辦.. ?? 我使用DirectX.DirectSound API編寫了代碼,但是它僅限於枚舉僅啟用的設備,而我看不到已禁用的設備。 而且我不認為有任何禁用或啟用設備的方法。

我將非常感謝您的幫助。

並且還建議我,如果可能的話,如何使用其他API來做到這一點。

我意識到這是一個非常古老的線程...但是我登陸這里試圖找出如何列出禁用的音頻設備,並且我成功完成了一個名為AudioEndpointController的C ++項目

只需更改行:

PlaybackDevice = pEnum->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pDevices);

至:

PlaybackDevice = pEnum->EnumAudioEndpoints(eRender, DEVICE_STATE_DISABLED, &pDevices);

據我所知,不可能以編程方式啟用/禁用設備。 至於問題的第一部分(需要查看禁用的設備),實際上是可能的,但不能單獨使用c#,您必須通過使用C ++ / CLI或在C#中使用顯式PInvoke來使用WASAPI。 您正在尋找IMMDeviceEnumerator :: EnumAudioEndpoints,它帶有一個標志,指示您是否要查看已禁用/未插入等設備。 請參閱http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd371400%28v=vs.85%29.aspx 在這種情況下,關於WASAPI的IMMDevice接口的好處是,它公開了一個與設備的DirectSound ID對應的GUID,因此您實際上可以使用WASAPI來檢測哪些設備處於活動狀態/不活動狀態等,並使用DirectSound進行所有其他操作。 為此,您將要使用IMMDevice :: OpenPropertyStore,並查詢PKEY_AudioEndpoint_GUID屬性。 這與傳遞給DirectSound的DSEnumCallback函數完全相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM