会话名称为空的C#CoreAudio API问题
我正在尝试用C#构建一个windows应用程序,通过使用核心音频api来控制和管理windows音量混合器。我面临的问题是关于获取会话名称,我可以通过获取会话分配的进程ID来实现,但是下面的代码生成空行会话名称为空的C#CoreAudio API问题,c#,winapi,C#,Winapi,我正在尝试用C#构建一个windows应用程序,通过使用核心音频api来控制和管理windows音量混合器。我面临的问题是关于获取会话名称,我可以通过获取会话分配的进程ID来实现,但是下面的代码生成空行 using System; using CoreAudio; namespace app { public static class Start { public static void Main(String[] args) {
using System;
using CoreAudio;
namespace app
{
public static class Start
{
public static void Main(String[] args)
{
MMDevice device;
MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
int num = device.AudioSessionManager2.Sessions.Count;
for (int i = 0; i < num; i++)
{
Console.WriteLine(device.AudioSessionManager2.Sessions[i].DisplayName);
}
Console.ReadKey();
}
}
}
这会导致以下问题:由于会话被检测为null,因此它们不会触发与新添加会话相关的通知 根据:如果客户端没有调用
IAudioSessionControl::SetDisplayName
来设置显示名称,则字符串将为空。因此我无法在代码中修复它?还是我误解了?对于同一个测试视频,当它在Firefox和Chrome中打开时,Chrome不会显示会话名称,并返回S\u OK
。
Mozilla Firefox
Mozilla Firefox
Mozilla Firefox
Mozilla Firefox
Mozilla Firefox
Mozilla Firefox
Mozilla Firefox
Mozilla Firefox
@%SystemRoot\System32\AudioSrv.DLL,-202
Mozilla Firefox
Mozilla Firefox