PlaySound只能播放默认的“SystemAsterisk”的声音(的Windows 10,C++,Python)的
问题描述:
我想这里提到使用Windows' PlaySound功能:https://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspxPlaySound只能播放默认的“SystemAsterisk”的声音(的Windows 10,C++,Python)的
然而,没有什么我尝试可以从播放默认改变声音“SystemAsterisk”。
我同时使用C++和Python,并得到了相同的结果尝试:
C++:
#include "stdafx.h"
#include <Windows.h>
#include <playsoundapi.h>
int main()
{
PlaySound(TEXT("SystemWelcome"), NULL, SND_ALIAS);
PlaySound(TEXT("C:\Users\Me\Downloads\sound1.wav"), NULL, SND_FILENAME);
return 0;
}
两个以上尝试播放不同的声音仍然返回默认的Asterisk声音。
的Python:
#!/usr/bin/python
import winsound
winsound.PlaySound("c:/Users/Me/Downloads/sound1.wav", winsound.SYN_ASYNC|winsound.SYN_FILENAME)
同样,我得到了相同的结果。
关于发生了什么事情的任何想法?也许这是Windows 10的问题?
答
这对我的作品在Windows 7和Windows 10:
#undef UNICODE
#define UNICODE
#include <windows.h>
#include <stdlib.h>
auto main()
-> int
{
bool const ok = !!PlaySound(L"c:/windows/media/ringout.wav", 0, SND_ALIAS);
return (ok? EXIT_SUCCESS : EXIT_FAILURE);
}
一个直接的问题,你的C++代码字符串文字
"C:\Users\Me\Downloads\sound1.wav"
其中每个\
启动无效转义序列。一个简单的解决方法是使用正斜杠/
而不是\
反斜杠。
您的Python代码的一个可能的问题是SYN_ASYNC
标志。这可能会导致函数立即返回。如果脚本立即退出,您可能不一定听到任何声音。
其他消息:
-
#include "stdafx.h"
是一个非标准的头,并防止一些读者直接尝试你的代码(他们没有生成头)。 -
TEXT
已过时,请在现代Windows中使用Unicode。 -
return 0;
对main
是不必要的,这是默认值。
在您的C++版本中,您需要转义您的反斜杠:'C:\\ Users \\ Me \\ Downloads \\ sound1.wav' –
Python代码的问题可能是SYN_ASYNC标志。 –