Windows Vistaのリリース後、Windows Functionビープ音は、内部スピーカーではなく、接続されているスピーカーでビープ音を鳴らします。
古い機能にアクセスする方法はありますか?古いWindowsAPIを使用することで可能でしょうか?または、これを可能にする他の方法はありますか?もしそうなら、私は頻度と期間の両方を設定する機能が欲しいです。
私は実際にWindowsXPプラットフォームをターゲットにしていることに言及する必要があります。
いいえ。関数は Kernel32.dll に実装されており、現在実行している OS のバージョンに関係なく、実行時に読み込まれます。コードは実行可能ファイルにもシステム DLL にも存在しないため、実行することはできません (別の OS バージョンから Kernel32.dll をコピーすることは考えないでください。これは単にトラブルを招くだけです)。
MessageBeep
の代わりに を使用してみることができますBeep
が、それでは出力の制御が少なくなり、内部の代わりにサウンド カードを使用する可能性があります。
MessageBeep
関数の興味深い歴史については、Larry Osterman のブログを参照してください。
現在、ほとんどのコンピューターにはスピーカーが内蔵されていないため、アクセスするものは何もありません。
Larry Osterman のブログによると、この機能は Windows 7 で意図的に削除されました。アーカイブからのこの投稿では、その問題について具体的に説明しています。が削除されたようでBeep.sys
、その古い疑似デバイス ドライバの機能が変更され、意図的にサウンドをサウンド カードにリダイレクトするようになりました。この記事は、歴史的な観点から興味深い読み物です。
Larry は MS の従業員で、Vista と Win7 の新しいオーディオ フレームワークに取り組んでおり、恐竜の時代 (少なくとも MS-DOS :D) から MS に勤務しているので、おそらく知っているでしょう。:)