C哔声功能在Windows 10上不起作用

时间:2019-02-22 11:29:30

标签: c

我在使用Dev C ++用C进行Beep函数编程时遇到了问题。

我正在使用的代码行是

Beep (1000, 25)

我需要持续25毫秒的蜂鸣声。 在Windows 8 / 8.1上这可以正常工作,我得到的正是我想要的。 但是,当我在Windows 10上运行同一程序时,它不会发出哔哔声!我尝试增加持续时间,然后发现如果持续时间为100ms或更长,则会发出哔哔声...

有什么想法吗?
难道这可能是由于硬件上重新放置了某些东西造成的?

1 个答案:

答案 0 :(得分:0)

我不认为这是 Windows 本身的限制,我有这个程序,当考虑到您在问题中描述的参数时,它似乎可以正常工作(尽管 25 毫秒是一个非常短的时间,但仍然可以听到)。

当然它是在 Visual Studio 2019 下编译的,但我认为这不会有什么不同。

#include <iostream>
#include <cstdlib>
#include <Windows.h>

int errorExit(char *str) {
    std::cerr << str << std::endl;
    return 1;
}

int main(int argc, char *argv[]) {
    if (argc != 3)
        return errorExit("beep: Usage: beep <frequency> <duration-in-millisecs>");

    int freq = std::atoi(argv[1]);
    if ((freq < 37) || (freq > 32767))
        return errorExit("beep: Frequency must be 37-32767 inclusive");

    int duration = atoi(argv[2]);
    if ((duration < 1) || (duration > 10000))
        return errorExit("beep: Duration must be 1-10000 inclusive");

    Beep(freq, duration);

    return 0;
}

如果您不能让它在您需要的频率和持续时间下工作,您可能需要研究类似 PlaySound 的东西,它可以使用任意音频文件,而不仅仅是简单的哔哔声。然后将简单的哔哔声放入音频文件(使用 Audacity 或其他一些工具)并播放。