none
求助一个蜂鸣器蜂鸣的问题 RRS feed

  • 问题

  • 如何让主板上的蜂鸣器蜂鸣?

    试过使用kernel32里的Beep函数时扬声器发出了蜂鸣声,但是在Windows 7里有延迟、音长不准、有停顿等问题。有没有别的方法?
    另外即使在XP上也是有的电脑可以有的电脑不行。

    请给个代码,最好是C#的……


    • 已更改类型 Mygod Studio 2012年3月21日 9:06 回答没有帮助。
    2012年2月24日 13:41

答案

全部回复

  • 请问您是否使用SystemSounds.Beep.Play()?SystemSounds.Beep 属性
    // Plays the sound associated with the Beep system event.
    SystemSounds.Beep.Play();

    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年2月24日 15:51
  • 我用的是kernel32.dll中的Beep。SystemSounds.Beep.Play这个不太好。
    2012年2月25日 2:19
  • 請試一下這個!

    Are there nice kernel32 beep sounds (onboard beep)?


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年2月25日 5:53
  • 没有帮助。
    2012年2月25日 12:26
  • Hi Mygod,

    欢迎来到C#论坛。

    也许你可以试试使用MessageBeep,只不过它是从扬声器发声而不是主板。下面是一个小例子。

            [DllImport("user32.dll")]
            [return: MarshalAs(UnmanagedType.Bool)]
            static extern bool MessageBeep(beepType uType);
            public enum beepType : uint
            {                 
                SimpleBeep = 0xFFFFFFFF,
                OK = 0x00,
                Question = 0x20,
                Exclamation = 0x30,
                Asterisk = 0x40,
            }
            [DllImport("User32.dll", ExactSpelling = true)]
            private static extern bool MessageBeep(uint type);
    
            public static void beep(beepType type)
            {
                MessageBeep((uint)type);
            }
            static void Main(string[] args)
            {
                beep(beepType.SimpleBeep);//还可使用其它几种声音
            }

    祝你愉快。


    Bob Shen [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月29日 3:15
    版主
  • Hi Mygod,

    我暂时标记了一个回复作为答案。如果您认为它对这个问题本身没有帮助,可以选择unmark ("取消答复标记")。

    如果您有任何问题,请您告诉我们。


    Bob Shen [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月5日 3:03
    版主
  • 没有帮助。我希望能使用某些方法直接操纵硬件或者处理蜂鸣的声音并延迟尽可能小地播放。
    2012年3月22日 11:26
  • 使用 XP 的 beep.sys 替换系统文件后问题解决。
    2014年8月7日 0:21