将任何应用程序的音量设置

7

我想知道如何在C#中设置特定应用程序(任何正在运行的应用程序,而不仅仅是我的应用程序)的音量级别。

我知道我可能需要使用P/invoke,这很好。我只是不确定声音API的工作原理以及如何获取/设置特定应用程序的音量(例如Vista / 7中的音量混合器)。

我知道可以通过编程实现,因为nircmd有一个功能可以做到这一点。

任何帮助都将不胜感激,谢谢。


从第一个谷歌搜索结果的帖子中:http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html - MrFox
@MrFox - 不幸的是,该链接中的代码仅描述了如何更改全局 WaveOut 音量。OP 正在寻找对各个应用程序设置进行单独控制的方法。 - Dave R.
1
这是通过WASAPI实现的,它是Vista及以上版本可用的新音频API。它是一种COM API,对于C#来说特别不友好,因为它不支持自动化兼容性。通过在Google上搜索+c# +wasapi,可以找到其他人编写的包装器。 - Hans Passant
Windows Vista 真的允许一个应用程序重置另一个应用程序的音量吗?这似乎是一个巨大的机会,让那些烦人的应用程序去利用。 - AShelly
2个回答

1

我认为你应该在这里查找。随着链接的跟踪,你会发现接口和 API 函数来操纵端点的音量。除了文档之外,微软还提供了一些 C++ 代码示例。正如你所说,使用平台调用在 .NET 中实现相同的功能是可行的。


-8

我认为(也希望)你的请求在实际上是不可能的。允许应用程序设置自己的音量就像允许应用程序覆盖用户的通知图标设置一样。这些设置是用户设置,所以你不能规避它们。

想象一下,一个用户将扬声器的音量调得很高,但是将所有单独应用程序的音量都调低了。你的应用程序出现并且说“无论如何,我会将自己设置为最大音量”。你刚刚让用户失聪,或者至少让他躲在房间的角落里,吓得要死。


1
这样做有完全合理的原因,而且在某些情况下可能是应用程序的主要目的,用户也会期望这样做。 - ThiefMaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接