2013-02-10 5 views
2

\aescape sequence이며 문자 상수에 경고 벨을 표시합니다. MSDN에서 Console.Beep() 방법 설명에 :" a"를 실행하고 Console.Beep() 메서드는 같은 비프 음을 재생합니까?

는 콘솔 스피커를 통해 경고음 소리를 재생합니다.

은의이 샘플 코드를 살펴 보자 :

public static void Main(string[] args) 
{ 
    Console.WriteLine("\a"); 
    Console.Beep(); 
} 

이 코드는 2 경고음을 만들고 그들이 나에게 같은 소리. 이제 그 증거를 볼 필요가 있습니다.

Console.Beep() 메서드를 디 컴파일 할 때 Win32Native.Beepkernel32.dll에서 사용합니다.

public static void Beep(int frequency, int duration) 
{ 
    Win32Native.Beep(frequency, duration); 
} 

그들의 주파수와 지속 시간이 다를 수 있습니다

, 나는이 물건에 대해 아무 말도하지 않지만 자신의 소스 (Win32Native.Beep) 동일? 어떤 소스가 \a벨 경고에 사용합니까?

+0

나는 '\ a'가 주파수 나 지속 시간을 제공 할 수있는 것이 아니기 때문에 이것들이 다른 것이라고 말하고 싶습니다. 물론, OS는'\ a'으로 표시 될 때 하드 코딩 된 값으로 후드 아래에서 동일한 코드를 호출하게 될 수 있습니다. – Oded

+0

그러나, 다소 학문, 안돼? 네가 직면하고있는 진짜 문제는 아니지? – Oded

+0

@Oded 그래, 그게 내가 직면했던 문제는 아니지만 항상 그렇지 않은지 궁금해. 물론'\ a'는 빈도 나 지속 시간이 없지만, 나는 그들을 단지 _different_라고 부르는 것 이외의 증거를 선호합니다. –

답변

10

이것은 오디오 (Windows 7 64 비트 (예, Windows로 다시 부팅해야 함, 저는 헌신적 인 것입니다 :))를 조사하는 것으로부터 수집 할 수 있습니다. Frap을 사용하여 오디오를 녹음 했으므로 신뢰할 수 있어야합니다. 이들은 (상단 하나 인 Console.Write('\a'), Console.Beep() 아래) 두 대담에서 트랙이다

using System; 
using System.Threading; 

namespace StackOverflow 
{ 
    class Program 
    { 
     private static void Main(string[] args) 
     { 
      Console.Write("\a"); 
      Thread.Sleep(500); 
      Console.Beep(); 
     } 
    } 
} 

:

내가 그들을 확인하는 데 사용되는 코드입니다.

나는 트랙에 확대 어느 시점에서

Two beeps

, 사인 파도가 서로 정확하게 일치, 그들은 동일한 기간을했다, 그래서 나는 그들이 사실, 동일한 결론해야 (윈도우 7에서).

+0

글쎄, 답변 및 노력을 주셔서 감사하지만 실제로 그들은 동일한 DLL을 사용하지 궁금해. 하지만 불행히도, 우리는 dll이 어떤 경고인지 알 수 없다고 생각합니다. –

+0

@ SonerGönül 그리고이 코드는 윈도우 버전마다 다를 수 있으므로 훨씬 더 복잡합니다. – antonijn