我有一个C#控制台应用程序,可以将很多日志记录到控制台(使用Trace
)。它记录的一些东西是网络消息的压缩表示(因此很多都被渲染为时髦的非字母字符)。
在应用程序运行时,我经常会发出系统蜂鸣声。我写入控制台的某些“文本”是否可能导致它们?
(系统发出哔哔声,我的意思是来自PC机箱内部的低技术扬声器,而不是任何一种Windows声音方案WAV)
如果是这样,有没有办法为我的应用程序禁用它?我希望能够输出任何可能的文本而不将其解释为声音请求。
答案 0 :(得分:19)
这通常是由输出字符代码7 CTRL-G引起的,这是BEL(铃声)字符。
购买新电脑或主板时,我通常做的第一件事就是确保从主板到扬声器的电线没有连接。从指挥官Keen那天开始,我就没有使用过扬声器(除去那根导线是与操作系统无关的最佳停止声音的方式: - )。
答案 1 :(得分:5)
HKEY_CURRENT_USER\Control Panel\Sound
将“Beep”键设置为“no”。
答案 2 :(得分:4)
绝对,如果您将ASCII控制代码“Bell”(0x7)输出到控制台,它会发出哔哔声。
答案 3 :(得分:3)
如果你不想要发出蜂鸣声,你必须在输出前更换0x7字符,或者禁用“Beep”设备驱动程序,你可以在非即插即用驱动程序部分找到它,如果打开“显示隐藏设备”选项,则可见。或者把扬声器拿出来。
答案 4 :(得分:3)
即使您检查BELL字符的输入,它仍可能会发出哔声。这是由于字体设置和unicode转换。有问题的字符是U+2022,子弹。
Raymond Chen explains:
在OEM代码页中,项目符号字符正在转换为 嘟。但那为什么呢?
你所看到的是反过来的MB_USEGLYPHCHARS。迈克尔卡普兰 前一段时间讨论过MB_USEGLYPHCHARS。它决定是否确定 字符应被视为控制字符或可打印 转换为Unicode时的字符。例如,它控制 是否应将ASCII响铃字符0x07转换为 Unicode铃声字符U + 0007或Unicode子弹U + 2022。您 需要MB_USEGLYPHCHARS标志来决定何时去 转换为Unicode,但没有相应的歧义 从Unicode转换。从Unicode转换时,U + 0007和 U + 2022映射到ASCII铃声字符。
答案 5 :(得分:1)
\ b将导致蜂鸣声,如果未在操作系统级别禁用。