1

これで、設定した長さのビープ音を で再生できることがわかりましたConsole.Beepが、探しているのは、開始と停止機能のように、特定の周波数の音を無期限に再生する方法です。何か案は?

4

3 に答える 3

3

コンソール名前空間で提供されるもの以外のビープ音を鳴らしたい場合は、スピーカーと直接話さなければなりません。Kernel32.dll を使用して、次のようにします。

最初に相互運用性を含めるようにしてください。

using System.Runtime.InteropServices;

次に、Beep の extern メソッドを追加し、他のメソッドからそれを使用します。これは、指定した周波数で必要なだけスピーカーにビープ音を鳴らします。

[DllImport("Kernel32.dll")]
public static extern bool Beep(Int32 frequency, Int32 duration);
public static void BeepFor(int mSec, int freq)
{
  int Frequency = freq;
  int DurationInMS = mSec;
  Beep(Frequency, DurationInMS);
}
于 2010-01-20T20:51:26.170 に答える
0

これらの質問でいつものように、最初の回答は次のようになります。

あなたが本当に達成しようとしていることは何ですか。本当に無期限のビープ音を鳴らしたいですか、それともより長い時間音を鳴らしたいですか?

于 2010-01-20T21:23:34.717 に答える
0

MIDIを使用できる場合があります。

SND_LOOP と SND_ASYNC を指定したPlaySound API呼び出しを使用して、WAV ファイルをループすることもできます。

最新の PC で同じサウンドを無期限に再生するという概念は、無限ループを作成および制御できるハードウェア レベルでない限り、または特定の周波数でスピーカーを単に「オンにする」ことができない限り、やや気まぐれです。より高いレベルの API とプログラミング言語では、これは許可されません。そのレベルでは、OS が他のアプリケーションと仲良くすることを強制するからです。

編集

Beep 呼び出しの持続時間はミリ秒単位であり、Int32 値を取ることにも注意してください。Int32.MaxValue ミリ秒は長い時間です。おそらく誰よりもビープ音を聞いて立つことができなかったでしょう。

于 2010-01-20T21:08:22.993 に答える