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

时间:2018-12-10 17:52:01

标签: winapi audio remote-desktop beep

我有一个Windows程序,该程序使用Win32 Beep(频率,持续时间)功能在发生重要事件时提醒用户。

现在,我的用户之一是远程桌面,该桌面连接到虚拟机并在其中运行应用程序。其他声音已正确重定向(例如播放WAV文件)。但是,蜂鸣声不会重定向。我什至创建了一个简单的测试程序,它所做的只是发出一个声音,而且确实,只有在本地计算机上运行时才发出声音。在“我的远程桌面”连接到的任何计算机上运行,​​并且它以静默方式运行。

如果有一种方法可以“打开”,那就太好了。如果没有,我将发出一个更改请求,以更改应用程序以播放wav文件,而不是使用内置的提示音功能。

如果有兴趣-这是我用来测试的超级简单控制台应用程序(Visual Studio / C#)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BeepTester
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Press a key to continue and play a short beep...");
            Console.ReadKey();
            Console.Beep(1500, 300);
            Console.WriteLine("All done, Press a key to exit...");
            Console.ReadKey();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

进一步的调查显示,必须运行一个名为“哔哔”的服务,才能通过选择的声音输出将以前与硬件相关的特定API调用转换为音调。

由于某种原因,当OS安装在VM上时(似乎是默认设置?),蜂鸣声服务设置为手动启动。当我以管理员身份手动键入“ NET START Beep”时,声音起作用。

人们可以编辑注册表,以使Beep服务在虚拟机启动时自动运行,然后永久解决该问题。