有没有办法使用 C++ 和 Xcode 在 Mac OS 上播放系统提示音?我知道我需要使用图书馆。是否有适用于 Mac 和 Windows 平台的库?
问问题
7127 次
3 回答
6
我想你可能想使用NSBeep
NS哔声
播放系统提示音。
#include <AppKit/AppKit.h>
void NSBeep (void);
对于命令行工具,这似乎可以正常工作:
#include <AppKit/AppKit.h>
#include <iostream>
using namespace std;
int main(void)
{
cout << "Hello world !" << endl;
NSBeep();
sleep(1)
return 0;
}
$ g++ -Wall -framework AppKit beep.cpp -o beep
$ ./beep
2021 年 5 月更新
虽然此解决方案在 2011 年有效,但 AppKit 现在似乎不再与 C++ 兼容,因此您现在需要将该文件视为 Objective-C++,即将 beep.cpp 重命名为 beep.mm。
于 2011-09-13T21:35:20.633 回答
2
播放哔声的跨平台方式是std::cout << "\007";
。我一直试图通过传入一个字符然后递减直到 7 来播放它。那没有用。不过,显式输出代码确实有效。
于 2011-09-18T05:31:09.003 回答
2
这是 2021 年适用于当前 macOS (Big Sur) 的替代方法(与我早期的 NSBeep 解决方案不同,它现在仅适用于 Objective-C++,不适用于 vanilla C++)。我反汇编NSBeep
发现它只是调用AudioServicesPlayAlertSound
了一个参数值0x1000(kSystemSoundID_UserPreferredAlert
)。AudioServicesPlayAlertSound
是 AudioToolbpx 框架的一部分,幸运的是它仍然适用于 C++(与 AppKit 不同)。
#include <AudioToolbox/AudioServices.h>
#include <iostream>
using namespace std;
int main(void)
{
cout << "Hello world !" << endl;
AudioServicesPlayAlertSound(kSystemSoundID_UserPreferredAlert);
sleep(1);
return 0;
}
编译并运行:
$ g++ -Wall -framework AudioToolbox beep.cpp -o beep
$ ./beep
于 2021-05-27T09:55:26.727 回答