gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:07:25 25 4
gpt4 key购买 nike

我目前正在开发一个应用程序,该应用程序直接与 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;

我想知道是否有可能识别同一进程是否正在输出声音,然后以某种方式识别该声音(如果是)。声音用于表示多个事件,因此如果我能够直接从流程中获取声音,我可以改进我的应用程序处理少数游戏场景的方式。

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

预先感谢您的帮助。

最佳答案

您可以通过 DLL injection 完成此操作.一种方法是作为调试器附加,拦截对 Windows 声音函数的调用,然后执行您需要执行的操作。

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

关于C# 和从另一个进程读取声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com