5

私は次のコードを持っています:

#include <windows.h>
#include <stdio.h>

int main(void)
{
        Beep(523, 500);
        Sleep(1000);
        return 0;
}

MinGWとDev-C++を使用してコンパイルしています。私の問題は、エラーは発生しませんが、何も聞こえないことです。私はWindows7を持っています。何かアイデアはありますか?

4

1 に答える 1

7

スピーカーをオンにします。すでにオンになっている場合は、音量を上げてください。コンピューターにスピーカーとサウンド カードがインストールされていない場合は、いくつかを入手してインストールし、プログラムをもう一度実行してみてください。

Windows 7のBeep機能から何かを聞くには、これらすべてが必要です。組み込みのハードウェア システム スピーカーからサウンドが再生されなくなります。代わりに、サウンドはユーザー セッションの既定のサウンド デバイスに渡されます。標準のローカル ユーザー セッションでは、それがサウンド カードになります。ドキュメントでは、「備考」セクションでこの重要な詳細について説明しています。

はるか昔、すべての PC コンピュータは、プリミティブ サウンドを生成するために、共通の 8254 プログラム可能なインターバル タイマー チップを共有していました。このBeep関数は、そのハードウェアでビープ音を発するように特別に作成されました。

これらの古いシステムでは、ミュートとボリューム コントロールは に影響しませんBeep。あなたはまだトーンを聞くでしょう。トーンを無音にするために、次のコマンドを使用しました。

net stop beep  
sc config beep start= disabled

それ以来、サウンド カードはほとんどすべての PC コンピュータに標準装備されています。サウンド カードがより一般的になるにつれて、メーカーは古いタイマー チップをコンピューターから削除し始めました。チップは、サーバー コンピューターの設計からも除外されました。その結果Beep、チップを搭載していないすべてのコンピューターでは機能しませんでした。ほとんどの開発者は、8254 チップの代わりにデフォルトのサウンド デバイスを使用するMessageBeep関数を呼び出すようになったので、これは問題ありませんでした。

最終的に通信するハードウェアが不足したためBeep、Windows Vista および Windows XP 64-Bit Edition では のサポートが中止されました。

Windows 7 では、Beep が書き直され、ビープ音がセッションの既定のサウンド デバイスに渡されるようになりました。通常、これはサウンド カードです。ただし、ターミナル サービスで実行されている場合を除きます。この場合、ビープ音はクライアントでレンダリングされます。

于 2012-04-22T09:19:32.970 に答える