我正在使用Windows Core Audio API,其中包含来自Controlling Application's Volume: By Process-ID
的包装器在此测试方法中,它设置应用程序的体积(通过ProcessID):
[TestMethod]
public void CanChangeVolume()
{
VolumeMixer.SetApplicationVolume(19348, 50f);
}
如果我在代码中手动输入19348
,则该功能可以正常工作。
但如果我传递一个动态值,就像这样......
[TestMethod]
public void CanChangeVolume()
{
foreach (AudioSession session in AudioUtilities.GetAllSessions())
{
if (session.Process != null)
{
VolumeMixer.SetApplicationVolume(session.ProcessId, 50f);
}
}
}
...我收到Core Audio API的以下错误:
System.InvalidCastException: Unable to cast object of type 'MMDeviceEnumerator' to type 'RemoteVolume.Server.MMDeviceEnumerator'.
注意:打印session.ProcessId
也正常工作......
例如:session.ProcessId = 8508
,VolumeMixer.SetApplicationVolume(8508, 50f)
工作正常