1

我有一个运行 32 位版本的 Windows Embedded 8 Standard 的工业面板。需要使用内置扬声器发出哔声。连接外部扬声器不是一种选择。

以前这是运行基于 XP 的 Windows Embedded Standard 并在 C# 中使用 Console.Beep 将使用内部扬声器。然而,在 Windows 8 Embedded Standard 中,这似乎使用了外部扬声器,尽管没有连接。

内部扬声器仍在运行 - 触摸屏驱动程序 (eGalaxTouch) 在点击屏幕时仍然使用内部扬声器,但是我无法在自己的应用程序中复制它。

我在 C# 应用程序中尝试了以下操作,但没有任何效果;

Console.Beep()
MessageBeep() (user32.dll)
Beep() (kernel32.dll)
SystemSounds.Beep.Play()

我知道这在 Windows 7 64 位以后是不可能的,但我在这里使用的是 32 位操作系统,它仍然适用于触摸屏吗?

虽然 C#/.NET 中的解决方案是理想的,但我会支持其他解决方案(C/C++/whatever)。

4

1 回答 1

0

通常在发布问题后不久,我会找到答案......

基本上,使用 Windows (XP) Embedded Standard 中的“Beep.sys”文件代替 Windows 8 Embedded 版本可以让 Console.Beep 按预期工作。

harrymc 对以下类似问题的回答https://superuser.com/a/230167/83606。请注意,Windows 8(嵌入式)的设备管理器中没有“哔”设备,但过程类似。

Windows 7 中更改的默认 Beep PC 扬声器 - 如何恢复旧样式

默认哔声由 下的驱动程序控制 c:\windows\system32\drivers\beep.sys。也许如果您使用 XP/Vista 的驱动程序将其关闭,它会增加音量。

要查看此驱动程序,您必须打开设备管理器,然后单击查看 > 显示隐藏的设备。然后在非即插即用驱动程序下,您会看到“哔”。这是运行您的哔声的驱动程序。右键单击它,然后选择属性并转到驱动程序选项卡,然后单击驱动程序详细信息... 这显示了文件版本,看起来它已经随 Windows 7 更改。所以用旧版本替换它,看看会发生什么。

要遵循的程序:

  1. 从 UBCD4WIN 光盘启动(如果您没有 SATA 硬盘,则从 BartPE 启动)
  2. 获取“C:\Windows\System32\Drivers\Beep.sys”文件的所有权,并授予本地“管理员”组“完全控制”权限。
  3. 将“Beep.sys”重命名为“Beep.old”(以防万一)
  4. 将“Beep.sys”从 XP 机器复制到此位置。
于 2017-03-03T14:02:38.567 回答