10

私の Windows 7 PC には、一連のスピーカー、いくつかのワイヤレス ヘッドフォン、および USB Web カメラがあります。これは、2 つの可能なオーディオ出力デバイスと 2 つのオーディオ入力デバイスがあることを意味します。

私はかなり頻繁にそれらを切り替えなければならないことに気づきました。現時点では、これは手動のプロセスです: スピーカー アイコンを右クリックし、「再生デバイス」または「録音デバイス」のいずれかを選択し、リストから正しいデバイスを選択します (そこには「無効な」デバイスもあります)。次に、「デフォルトに設定」を押します。

私は周りを見回しましたが、見つけることができるのは、SendKeysこれを自動化するためにスクリプトを作成している人だけです。

それはひどい。

これを簡単にするために簡単なトレイアプリ/ホットキーアプリを作成できるように、プログラムでオーディオ入出力デバイスを切り替える方法はありますか?

4

2 に答える 2

16

文書化されていないとされるCOM インターフェイスIPolicyConfig (@author EreTIk に敬意を表します) により、それが可能になります。

これはサンプル実装です。

HRESULT SetDefaultAudioPlaybackDevice(LPCWSTR devID)
{
    IPolicyConfigVista *pPolicyConfig;
    ERole reserved = eConsole;

    HRESULT hr = CoCreateInstance(
                    __uuidof(CPolicyConfigVistaClient),
                    NULL, 
                    CLSCTX_ALL, 
                    __uuidof(IPolicyConfigVista), 
                    (LPVOID *)&pPolicyConfig);

    if (SUCCEEDED(hr))
    {
        hr = pPolicyConfig->SetDefaultEndpoint(devID, reserved);
        pPolicyConfig->Release();
    }

    return hr;
}

この関数には、デバイス ID の文字列を渡す必要があります。デバイス ID の例

{0.0.1.00000000}.{d915c7bb-d5d7-4c92-80d9-1a0ee5d954f1}

このデバイス ID は、オーディオ デバイスの列挙を通じて取得できます。

于 2013-11-28T16:07:10.667 に答える
3

プログラムでデフォルトのデバイスを変更することを検討している場合、これは設計上不可能です。

于 2012-10-24T17:49:35.823 に答える