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

标签 winapi audio remote-desktop beep

我有一个 Windows 程序,它使用 Win32 Beep(frequency, duration) 功能在发生重要事情时提醒用户。

现在我的一个用户是远程桌面连接到虚拟机,并在那里运行应用程序。其他声音被正确重定向(例如播放 WAV 文件)。但是,哔声不会被重定向。我什至创建了一个简单的测试程序,它所做的只是发出一个声音,果然,它只在我的本地机器上运行时发出声音。在我远程桌面连接到的任何计算机上运行,​​它以静默方式运行。

如果有办法“打开它”,那就太好了。如果没有,我将提出更改请求以更改应用程序以播放 wav 文件,而不是使用内置的哔声功能。

如果有兴趣 - 这是我用来测试的 super 简单的控制台应用程序(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();
        }
    }
}

最佳答案

进一步调查表明,必须运行一项名为“Beep”的服务,以通过选择的声音输出将这个过去与硬件相关的特定 API 调用转换为音调。

出于某种原因,当在 VM 上安装操作系统时(似乎是默认设置?),哔声服务设置为手动启动。当我以管理员身份手动输入“NET START Beep”时,声音有效。

可以编辑注册表,让虚拟机启动时自动运行Beep服务,问题就永久解决了。

关于winapi - Console.Beep() - 声音不通过 RDC 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53711049/

相关文章:

c++ - 在 opengl 应用程序中不断滞后

c - 在C语言中使用 "GetAsyncKeyState(VK_UP)"和...

c++ - Windows 上的写时复制文件映射

Java:制作低质量图像

vb6 - 为什么使用 RDP 时找不到远程 SmartCard

c - 访问冲突写入位置插入数组

php - <audio>标签与PHP变量

python - (python/pygame)声音停顿和停止

c# - Kinect 音频 PCM 值

azure - 是否有解决方案来设置动态 Windows 虚拟桌面主机池负载平衡方法?