1

私はC#の初心者です..ちょっとばかげた質問であれば、私の質問に悩まされないでください..

無効になっている再生および録音デバイスを C# コードで確認する必要があり、必要に応じて有効または無効にしたいと考えています。どのようにアプローチできますか..?? DirectX.DirectSound API を使用してコードを作成しましたが、有効になっているデバイスのみを列挙することに制限されており、無効になっているデバイスの存在を確認できません。また、デバイスを無効または有効にする方法はないと思います。

助けてくれて本当にありがとう。

また、可能であれば、他の API を使用してこれを行う方法を教えてください。

4

2 に答える 2

1

これは本当に古いスレッドだと思います...しかし、無効なオーディオデバイスをリストする方法を見つけようとしてここにたどり着きました.AudioEndpointControllerと呼ばれるC++プロジェクトで成功しました

次の行を変更するだけです。

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

に:

PlaybackDevice = pEnum->EnumAudioEndpoints(eRender, DEVICE_STATE_DISABLED, &pDevices);
于 2016-05-04T14:37:01.910 に答える
0

私の知る限り、プログラムでデバイスを有効/無効にすることはできません。質問の最初の部分 (無効なデバイスを表示する必要がある) については、これは実際には可能ですが、C# だけを使用することはできません。これには、C++/CLI を使用するか、C# で明示的な PInvoke を使用して WASAPI を使用する必要があります。IMMDeviceEnumerator::EnumAudioEndpoints を探しています。これは、無効化されたデバイスやプラグが抜かれたデバイスなどを表示するかどうかを示すフラグを取ります。http://msdn.microsoft.com/en-us/library/windows/desktop/dd371400%28v=vs.85%29.aspxを参照してください。. この場合の WASAPI の IMMDevice インターフェイスの優れた点は、デバイスの DirectSound ID に対応する GUID を公開することです。そのため、実際に WASAPI を使用してどのデバイスがアクティブ/非アクティブかを検出し、DirectSound を使用して他のすべてのことを行うことができます。これには、IMMDevice::OpenPropertyStore を使用し、PKEY_AudioEndpoint_GUID プロパティをクエリします。これは、DirectSound の DSEnumCallback 関数に渡されるものとまったく同じです。

于 2013-06-05T19:27:31.563 に答える