0

游戏 Titanfall 2 显示了播放设备的音频配置。 https://i.imgur.com/e9NHel6.png

我能做些什么来通过 C# 中的代码获取这些信息吗?

更新和更正(UTC 时间 2019 年 9 月 29 日下午 3:12 左右):上面的链接图片显示了免费游戏 Apex Legends 的音频选项。Titanfall 2 音频设置的链接是http://i.imgur.com/6OSSysd.gif。对于这两款游戏,Windows 音频配置都会显示信息,用户无法在游戏中更改此选项。

有些人可能会在https://satsun.org/audio/上找到有用的信息。

4

1 回答 1

0

您可以通过 MMDevice 在 Windows Vista 或更高版本上枚举设备

IMMDeviceEnumerator *enumerator = nullptr;
IMMDevice *device = nullptr;

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), nullptr, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&enumerator);
if (FAILED(hr))
       ...

// Get the default renderer
hr = enumerator->GetDefaultAudioEndpoint(eRender, eConsole, &device);
if (FAILED(hr))
       ...

    hr = pEndpoint->OpenPropertyStore(
                      STGM_READ, &pProps);
if (FAILED(hr))
       ...

    PROPVARIANT varName;
    // Initialize container for property value.
    PropVariantInit(&varName);

    // Get the endpoint's physical speaker property.
    hr = pProps->GetValue(
                   PKEY_AudioEndpoint_PhysicalSpeakers, &varName);
if (FAILED(hr))
       …

    // See https://docs.microsoft.com/en-us/windows/win32/coreaudio/pkey-audioendpoint-physicalspeakers

    PropVariantClear(&varName);

请参阅Microsoft 文档

于 2019-12-18T20:27:11.020 回答