我使用以下的答案2代码来静音外部播放器,如vlc或windows media player。
Controlling Application's Volume: By Process-ID
VLC播放器正常静音。但Windows媒体播放器没有。
视觉上它正确变异,如下图所示。但我仍然通过扬声器听到声音。当我删除静音(应用程序的静音)并使用鼠标手动将其静音时,它会被正确静音。
public static void mute()
{
for(int i = 0;i<playerList.Length;i++)
{
var hWnd = FindWindow(null, playerList[i]);
if (hWnd == IntPtr.Zero)
{
Console.WriteLine("Mute " + playerList[i] + " Error_1");
continue;
}
uint pID;
GetWindowThreadProcessId(hWnd, out pID);
if (pID == 0)
{
Console.WriteLine("Mute " + playerList[i] + " Error_2");
continue;
}
VolumeMixer.SetApplicationMute((int)pID, true);
Console.WriteLine("Mute " + playerList[i] + " Ok PID: " + pID);
}
}
答案 0 :(得分:0)
@Streamline在评论中说:
在GetVolumeObject(int pid)方法中:而不是只返回一个 会话音量控制,可能必须返回包含所有的列表 ISimpleAudioVolume具有WMP的进程ID并设置 所有这些都是静音状态。
这就是问题所在。现在它完美无缺。