クライアントから、次の厄介な問題を解決するように依頼されました。彼らは、明らかな理由もなく「左右」にメッセージボックスを表示する傾向があるカスタムソフトウェアを持っています。たとえば、ソフトウェア自体が会計プログラムであり、顧客の支払いを受け取ると、メッセージ ボックスが 3 ~ 4 回連続して表示されることがあります。各メッセージ ボックスは、Windows の既定のサウンドを再生します。残念ながら、このソフトウェアがプログラムされた方法、それが再生するサウンドのタイプは完全に間違っています。たとえば、メッセージ自体が単なる情報である場合、警告メッセージ ボックスを表示し、警告システム サウンドを再生することがあります。これはすべて、ソフトウェアを使用するスタッフにとって非常に煩わしいものです。
ソフトウェアを配布しているベンダーに連絡を取ろうとしましたが、行き詰まりました。だから今、私はこの問題を軽減する方法を探しています。
私の最も簡単な解決策は、スピーカーをミュートすることを提案することでしたが、残念ながら、受信メールを聞くことができるようにするために、そして最も重要なことに、後でボイスメールを再生できるようにするために、スピーカーが存在する必要があります. したがって、私の解決策は、単一のプロセスだけでメッセージボックスの音をミュートすることでした。
私の経験から、これらの音を生成している可能性のある 2 つの API があることを知っています: MessageBeepと古いBeepです。
AppInit_DLLs を使用してシステム API にフックする方法を説明しているこの記事も見つけました。著者が示唆するように、カーネル32.dllではなくUser32.dllからフックする必要があるAPIの両方を除いて、それはうまく機能します。
質問セクションには、User32.dll から API にフックするためのおおよその手順を示すこの投稿もありますが、それらを実装しようとすると、十分な情報がありません (私の知識ではそれを実行するための情報がありません)。
私の質問は、User32.dll モジュールの API にフックする方法を知っている人はいますか?
編集:追伸。言及するのを忘れました。このソフトウェアは、UAC と互換性がないため、UAC を無効にして Windows 7 Professional にインストールされます :)