2010-05-17 43 views
5

我想确定另一个程序是否播放高于某个阈值的声音。我不想检查计算机上的音量设置或类似的东西。我真的只需要看看是否有任何应用可以播放比我期待的更高的内容。任何人都知道这是可能的还是如何去做的?确定在C#中播放响亮的声音的时间

+2

我的直接反应是,使用.Net没有“现成的”方法。可能需要更低级别的声音硬件。即使那样,我也不认为你可以得到实际的物理音量,因为这可以从电脑外部控制(使用音量旋钮)。 :) – Anthony 2010-05-17 12:54:22

+0

我认为这样做的程序需要深入研究系统基础结构,比如靠近声卡驱动程序。也许DirectX允许你去那里...... – flq 2010-05-17 12:54:27

回答

1

签出代码项目上的this项目。这是一个使用托管DirectX并且完全用C#编写的音量表。

1

在本地计算机上有很多可能的声音来源,最终这些声音将通过Windows声音系统传送到调音台并通过声卡传出。我知道监视Windows系统上所有声音的唯一方法是使用设备驱动程序开发工具包编写过滤器驱动程序。这将拦截对声音系统的所有请求,浏览正在播放的数据以供播放,并且可以在发现较大差异(abs(data [x + 1] - data [x]))时设置标记/写入日志是一个很大的值)。

驱动程序的开发通常是用C语言完成的。如果你想要走这条路线,那么网络上有大量的示例代码。