2010-01-20 3 views
1

이제는 Console.Beep으로 설정된 지속 시간의 경고음을 재생할 수 있다는 것을 알고 있습니다. 그러나 내가 찾고있는 것은 시작 및 정지 기능과 같은 특정 주파수의 소리를 무기한 재생하는 방법입니다 . 어떤 아이디어?무기한 시스템 스피커 경고음

+16

귀하의 사용자가 당신을 싫어합니다 –

+1

여기를 참조하십시오 : http://stackoverflow.com/questions/1195828/c-produce-a-continuous-tone-until-interrupted –

+0

나는 검색했지만 아무 것도 찾지 못했습니다. 더 많이 검색 했어야했는데. – Bevin

답변

3

콘솔 네임 스페이스에서 제공되는 것 이외의 경고음을 울리려면 스피커와 직접 통화해야합니다. 과 같이이 작업을 수행 할 수있는 Kernel32.dll을 사용

먼저 상호 운용성 포함해야합니다

using System.Runtime.InteropServices; 

그런 다음 음의 통근 방법을 추가하고 다른 방법에서 사용을,이 사람은 경고음이 울립니다 스피커는 원하는 주파수를 원하는만큼 오래 사용할 수 있습니다.

[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); 
} 
+0

그리고 Console과 다릅니다 .Beep ... 어떻게? 이것은 기본적으로 Console.Beep이 호출하는 것입니다. – Bevin

+0

* 똑같은 * 것입니다. –

+0

예, 그래서 내가 찾고있는 것이 아닙니다. – Bevin

0

MIDI을 사용할 수 있습니다.

PlaySound API 호출을 사용하여 SND_LOOP 및 SND_ASYNC가 지정된 WAV 파일을 루프 할 수도 있습니다.

무한 루프를 작성하고 제어하거나 특정 주파수로 스피커를 "켜기"만 할 수있는 하드웨어 수준에 있지 않는 한 현대의 PC에서 동일한 사운드를 무기한 재생한다는 개념은 다소 변덕 스럽습니다. 이 수준에서 API가 높은 수준의 API와 프로그래밍 언어는이를 허용하지 않습니다. OS가 다른 응용 프로그램과 잘 어울리는 게임이기 때문입니다.

편집

또한 경고음 통화 시간 (밀리 초)이며이 Int32 값을한다는 것을 주목해야한다. Int32.MaxValue 밀리 초는 시간입니다. 아마 누군가는 경고음을 듣고 참을 수 있습니다.

0

는 언제나 이러한 질문의 첫 번째 응답해야한다 : 당신이 정말로 달성하려고하는 무엇

. 당신은 정말로 무한한 지속 시간의 삑 소리를 내고 싶습니까, 아니면 더 오랜 기간 동안 소리를 내고 싶습니까?

관련 문제