2009-06-03 80 views
4

我有一个C#控制台应用程序,记录很多控制台(使用Trace)。它记录的一些东西是网络消息的压缩表示(所以很多东西都呈现为非时髦的非字母字符)。Windows - 无线控制台输出可能会导致系统发出嘟嘟声?

我在应用程序运行时每隔一段时间都会发出系统蜂鸣声。我写给控制台的一些“文本”是否有可能导致它们?


如果是这样(通过系统提示音,我从PC机箱内的低技术含量的扬声器,没有任何一种的Windows声音方案WAV的意思),有没有什么办法来禁用它为我应用?我希望能够输出任何可能的文本,而不会将其解释为声音请求。

+0

请编辑您的问题,而不是添加答案。几个答案已经表明如何在不检查每个数据包的情况下做到这一点,但本质上是机器级问题。最终输出原始字节到控制台是一个坏主意,因为控制台,大致来说,期望文本 – ShuggyCoUk 2009-06-03 19:30:22

+0

将二进制数据显示在十六进制转储而不是将它全部展示给控制台是否更有意义? – 2013-09-26 05:12:10

回答

3

如果你不想当发出蜂鸣声,你要么有输出之前更换为0x7字符,或禁用“哔”的设备驱动程序,您将在非即插即用查找和播放驱动程序部分,如果打开“显示隐藏设备”选项则可见。或者把扬声器拿出来。

19

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

我购买一台新电脑或主板时通常做的第一件事情是确保从主板到扬声器没有连接电线。自从Commander Keen开始使用扬声器以来,我一直没有使用扬声器(并且除去这种线是阻止声音的最佳操作系统不可知的方法:-)。

4

绝对,如果你输出ASCII控制码“钟”(为0x7)到一个控制台,它会发出蜂鸣声。

1

\ b如果在操作系统级别上未禁用输出字符串,则会发出嘟嘟声。

5
HKEY_CURRENT_USER\Control Panel\Sound 

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

3

即使您检查BELL字符的输入,它仍可能发出蜂鸣声。这是由于字体设置和unicode转换。有问题的角色是U+2022,Bullet。

雷蒙德陈explains

在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铃声字符。