gpt4 book ai didi

c# - Windows XP 中的 "Per Application"音频混合器

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:03 25 4
gpt4 key购买 nike

我需要在 Windows XP 中对来自其他进程的声音进行静音和取消静音。我正在寻找最佳策略。可以编写一个内核模式混合器来过滤输出设备的输入吗?我的另一种方法是为各种 API 设置 Hooks 以拦截它们的 Win32 调用。我非常喜欢侵入性较小的方法。

一些注意事项:涵盖使用 WinMM 和 DirectSound 系统组件的应用程序可能就足够了(即我不需要担心其他音频接口(interface))。

这最终需要在 C# 应用程序中使用。我在互操作方面相当熟练,但不了解 Win32 的内部知识来实现​​这一点。

虽然列表预计会增加,但可以列出所有需要静音的应用程序并分别处理每个应用程序。

附言以防万一,这些操作将在用户同意的情况下执行(没有黑幕业务)。

最佳答案

内核模式驱动程序的问题是它们通常不是进程感知的。这是干净的分层架构的一部分。处理进程是操作系统本身的责任。音频驱动程序应该处理音频。现在,混音器肯定应该处理多个音频流,并且可以赋予它们不平等的权重,但它不应该特别关心它们来自哪里。此外,内置混音器并非设计为可更换,因此您必须在混音之前截取音频流。

因此,在 XP 上使用 Microsoft Detours 在 API 级别拦截调用更有意义。你在那里有调用过程信息。 Detours 基本上将程序集注入(inject)操作系统的用户模式部分,因此我建议使用 C++ 而不是 C# 和 Detours。

据我了解,在 Vista 上,audiostack 被重写,因此可以将音频流与应用程序相关联,但这是系统范围的功能。

关于c# - Windows XP 中的 "Per Application"音频混合器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1422940/

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