gpt4 book ai didi

c++ - 尝试连接到 MessageBeep 系统 API

转载 作者:可可西里 更新时间:2023-11-01 11:33:38 26 4
gpt4 key购买 nike

一位客户要求我解决以下棘手的问题。他们有一个自定义软件,该软件倾向于在没有任何明显原因的情况下“左右”显示消息框。例如,软件本身是一个会计程序,当他们接受客户付款时,消息框可能会连续显示大约 3 或 4 次。每个消息框都播放 Windows 默认声音。不幸的是,这个软件的编程方式,它播放的声音类型是完全错误的。例如,当消息本身只是一条信息时,它可能会显示一个警告消息框并播放警告系统声音。对于使用该软件的员工来说,这一切都很烦人。

我试图联系分发该软件的供应商,但我遇到了死胡同。所以现在我正在寻找缓解此问题的方法。

我最简单的解决方案是建议将扬声器静音,但不幸的是,它们需要有声音才能听到传入的电子邮件,最重要的是,能够稍后播放来自它们的语音邮件。所以我的解决方案是以某种方式为单个进程静音消息框的声音。

根据我的经验,我知道有两个 API 可能会产生这些声音:MessageBeep和一个更老的Beep .

我还找到了this article这解释了如何使用 AppInit_DLL Hook 到系统 API。它工作得很好,除了我需要 Hook 的两个 API 来自 User32.dll 而不是像作者建议的那样来自 kernel32.dll。

还有 this post在问题部分,有点给出了从 User32.dll 连接到 API 的大致步骤,但是当我尝试实现它们时,没有足够的信息(据我所知)。

所以我的问题是,有人知道如何挂接到 User32.dll 模块中的 API 吗?

编辑:附言。忘了说了。此软件安装在 Windows 7 Professional 上,禁用了 UAC——因为它与 UAC 不兼容:)

最佳答案

作为替代方案,您可以为您的应用程序打补丁。查找对 MessageBeep 的调用并用 nop 覆盖它们。

关于c++ - 尝试连接到 MessageBeep 系统 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17053200/

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