4

我有一个 C# 控制台应用程序,它在控制台中记录了很多内容(使用Trace)。它记录的一些内容是网络消息的压缩表示(因此其中很多都呈现为时髦的非字母字符)。

应用程序运行时,我经常收到系统哔声。我写到控制台的一些“文本”是否可能导致它们?

(系统提示音,我的意思是来自 PC 机箱内的低技术扬声器,而不是任何类型的 Windows 声音方案 WAV)


如果是这样,有没有办法为我的应用程序禁用它?我希望能够输出任何可能的文本,而不会将其解释为声音请求。

4

6 回答 6

19

这通常是由输出字符代码 7 CTRL-G 引起的,它是 BEL(铃)字符。

购买新电脑或主板时,我通常做的第一件事是确保从主板到扬声器的线没有连接。自从指挥官基恩时代以来,我就没有使用过扬声器(移除那根电线是与操作系统无关的停止声音的最佳方式:-)。

于 2009-06-03T13:29:47.047 回答
5
HKEY_CURRENT_USER\Control Panel\Sound

将“哔”键设置为“否”。

于 2009-06-03T13:59:32.883 回答
4

当然,如果您将 ASCII 控制代码“Bell”(0x7)输出到控制台,它会发出哔哔声。

于 2009-06-03T13:30:15.483 回答
3

如果您不想发出哔声,则必须在输出之前替换 0x7 字符,或者禁用“哔声”设备驱动程序,您可以在非即插即用驱动程序部分找到,如果您打开“显示隐藏的设备”选项。或者把扬声器拿出来。

于 2009-06-03T13:56:27.037 回答
3

即使您检查 BELL 字符的输入,它仍可能会发出哔哔声。这是由于字体设置和 unicode 转换造成的。有问题的字符是U+2022,子弹。

Raymond Chen解释说

在 OEM 代码页中,项目符号字符被转换为哔声。但这是为什么呢?

您所看到的是相反的 MB_USEGLYPHCHARS。Michael Kaplan 不久前讨论了 MB_USEGLYPHCHARS。它确定在转换为 Unicode 时是否应将某些字符视为控制字符或可打印字符。例如,它控制 ASCII 钟形字符 0x07 是否应转换为 Unicode 钟形字符 U+0007 或 Unicode 项目符号 U+2022。您需要 MB_USEGLYPHCHARS 标志来决定在转换为 Unicode 时要走哪条路,但从 Unicode 转换时没有相应的歧义。从 Unicode 转换时,U+0007 和 U+2022 都映射到 ASCII 响铃字符。

于 2013-02-09T01:18:01.163 回答
1

如果未在操作系统级别禁用,输出字符串中的 \b 将导致蜂鸣声。

于 2009-06-03T13:30:40.820 回答