C#和从另一个过程中读取声音?

C#和从另一个过程中读取声音?,c#,audio,C#,Audio,我目前正在开发一个与C#中的益智游戏直接交互的应用程序。它可以通过屏幕抓取游戏状态,然后解决下一步应该采取的行动来进行游戏 应用程序通过搜索进程并抓取其矩形来抓取游戏的宽度和高度,如下所示 var p = Process.GetProcessesByName("game")[0]; var r = new User32.Rect(); // Bring the window to the foreground in order to get its coordinates. User32.Se

我目前正在开发一个与C#中的益智游戏直接交互的应用程序。它可以通过屏幕抓取游戏状态,然后解决下一步应该采取的行动来进行游戏

应用程序通过搜索进程并抓取其矩形来抓取游戏的宽度和高度,如下所示

var p = Process.GetProcessesByName("game")[0];
var r = new User32.Rect();

// Bring the window to the foreground in order to get its coordinates.
User32.SetForegroundWindow(p.MainWindowHandle);
User32.GetWindowRect(p.MainWindowHandle, ref r);

// Get the width and height of the window.
int width = r.right - r.left;
int height = r.bottom - r.top;
我想知道的是,是否有可能识别出相同的过程是否输出声音,然后以某种方式识别出声音是否输出。声音用于表示多个事件,因此如果我能够直接从过程中获取声音,我可以改进我的应用程序处理少数游戏场景的方式

我读过关于能够在特定声卡上点击“你听到的”输入的文章,但这意味着如果一个完全独立的应用程序播放声音,它会产生干扰,对吗?我真的希望有一个特定于流程的解决方案


提前感谢您的帮助。

您可以通过。一种方法是作为调试器附加,拦截对Windows声音函数的调用,并执行您需要执行的操作


Microsoft Research有一种拦截任何API的高级方法:。我没有这方面的经验,但它看起来相当强大。您可以下载API。请注意,在商业软件中使用此API需要一次性支付10000美元的费用。

谢谢,这看起来非常有用。