2012-04-18 11 views
1

Windows Vistaのリリース後、Windows機能Beepは、内蔵のスピーカーではなく、接続されたスピーカーでビープ音を鳴らします。内蔵スピーカーでサウンドを再生し、古いXP APIを使用する可能性がありますか?

古い機能にアクセスする方法はありますか?それは古いWindowsのAPIを保持することによって可能なのだろうか?あるいは、これを可能にする他の方法はありますか?もしそうなら、私は頻度と期間の両方を設定する能力が欲しいです。

私は実際にはWindows XPプラットフォームをターゲットにしていることを言及する必要があります。

+1

多くの新しいコンピュータにはシステムスピーカーが搭載されていないか、サウンドカード経由でしか実装されていないため、この機能はおそらく削除されています。トーンを再生したい場合は、実際のオーディオAPIを使用してください。 :) – duskwuff

+0

私は最近新しく新鮮なマザーボード(MSI-Z68A)を購入し、内蔵スピーカーが付属しています。ほとんどのコンピュータにはまだ内部スピーカーがあり、POST(電源投入時セルフテスト)中に警告するために使用します。 – David

+1

...しかし、多くのコンピュータは*いません。 POSTやオーバークロックのようなものを気にする愛好家をターゲットにしているので、あなたが組み立てるものはしばしばありますが、OEMはコスト上の理由からハードウェアスピーカーを含めてやめました。 –

答えて

6

いいえこの機能は、現在実行中のOSのバージョンから実行時にロードされるKernel32.dllに実装されています。実行可能ファイルやシステムDLLにはコードが存在しないので、実行することはできません(Kernel32.dllを別のOSバージョンからコピーすることは考えられません)。

代わりBeepMessageBeepを使用して試すことができ、それは、出力上であなたに以下に制御することができますし、おそらくまだ、Larry Osterman's blogを参照してくださいMessageBeep機能の興味深い歴史のために内部

の代わりにサウンドカードを使用します。

+0

XPを搭載した仮想マシンで実行すると、内部スピーカーにビープ音が鳴りますか? – David

+0

@DavidJensen:そうではありません。 – dreamlax

+0

@DavidJensen:可能性は低いですが、VM実装によって異なります。 VMの8254ドライバの実装が実際のマシンの8254またはそのサウンドカードに渡されるかどうかによって異なります。 –

2

現在、ほとんどのコンピュータに内蔵スピーカーが搭載されていないため、アクセスするものはありません。

この機能は、Windows 7では、Larry Osterman's blogに従って意図的に削除されました。アーカイブからのthis postは、その問題について具体的に説明しています。 Beep.sysが削除され、古い擬似デバイスドライバの機能が変更され、意図的にサウンドがサウンドカードにリダイレクトされたようです。この記事は、歴史的な見地からの興味深い読書です。

ラリーはVistaとWin7用の新しいオーディオフレームワークを手がけたMSの従業員で、おそらく知っているように恐竜の日(MS-DOS以上:D)からMSにいました。 :)

関連する問題