C# - Console.Beep 在 Windows Vista 上不起作用

Posted

技术标签:

【中文标题】C# - Console.Beep 在 Windows Vista 上不起作用【英文标题】:C# - Console.Beep does not work on Windows Vista 【发布时间】:2010-09-02 20:02:09 【问题描述】:

当我在 Win Vista(64 位)上尝试 Console.Beep() 时,它不起作用。音箱本身没问题,电脑启动时会发出哔哔声。 有什么建议吗?谢谢!

【问题讨论】:

【参考方案1】:

它是 64 位 Vista 吗?

Console.Beep 调用 API 函数 Beep,这在 64 位 Vista 上不受支持。

引用:Windows Vista x64 和 Windows XP 64 位版本:不支持此功能。

您可以使用MessageBeep 代替,如果可以通过扬声器而不是直接从主板发出哔哔声。请参阅 here 了解如何从 C# 调用它。

【讨论】:

显然,他们必须首先被告知,然后才能记录在案,请参阅:connect.microsoft.com/VisualStudio/feedback/details/356978/…【参考方案2】:

Vista/XP x64 不支持 Beep 方法。我想你确实有 64 位操作系统?

【讨论】:

我可以确认它可以在 64 位 Windows 7 上运行(它将使用桌面扬声器而不是内部 PC 扬声器。) Scott,所以如果您调用 Comsole.Beep,您的声卡会播放它吗? @Petr:如果您在之前的评论者姓名前加上 @,他们会收到通知您给他们留下了评论,否则 @scott 可能看不到它。 (错过了斯科特已经发布了我添加到此评论的链接,因此将其编辑掉)【参考方案3】:

正如其他人发布的那样,PC 扬声器 Beep 在 64x 的 windows vista 或 XP 中不受支持,而在 windows 7 中则完全不支持。这是 Microsoft 的一篇博文,解释了原因

http://blogs.msdn.com/b/larryosterman/archive/2010/01/04/what-s-up-with-the-beep-driver-in-windows-7.aspx

【讨论】:

【参考方案4】:

正如其他人所建议的那样,Console.Beep() 在 64 位窗口上不能像 the documentation states 那样工作。相反,您可以使用以下发出哔声的语句(但不能通过 Beep API):

// beep
System.Media.SystemSounds.Beep.Play();

解决方法最初是 found here at MSDN Connect。

【讨论】:

这不起作用。在 SystemSounds 中有一个 Beep 但它不是方法。 SoundsSystems 命名空间对我的 VS 2010 来说是未知的 @Petr: Beep 不是方法,它是SystemSound 类型的属性(没有s)。它有一种方法,Play()。不过,我修正了错字。现在可以了。 谢谢。但是它只是播放相关的声音,没有办法改变频率等:( @Petr:是的。为此,您可以使用普通的媒体方法来创建自己的声音,但这需要更多的工作。只要底层 API 不起作用,恐怕你就会被困在这里。

以上是关于C# - Console.Beep 在 Windows Vista 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在(期间)鼠标单击时发出 Console.Beep?

一种连接 Console.Beep 声音的方法

Console.Beep() - 声音不通过 RDC 重定向

是否可以在播放时更改 Console.Beep 的频率?

"\a" 和 Console.Beep() 方法播放相同的哔声吗?

通过声卡哔哔声