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的问题?

+0

在您的C++版本中,您需要转义您的反斜杠:'C:\\ Users \\ Me \\ Downloads \\ sound1.wav' –

+0

Python代码的问题可能是SYN_ASYNC标志。 –

这对我的作品在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是不必要的,这是默认值。
+0

愚蠢downvoter,请解释你downvoted你的感受。谢谢。 –

+0

感谢您的帮助。我试图逃避我的反斜杠。那里没有运气。感谢您使用'#include“stdafx.h”'和'return 0'信息。我只是在Visual Studio中使用标准设置(使用C++有点生疏)。 – Tallissan

+0

我试过你的代码,也没有运气。另外,我是否应该在StackOverflow的代码中包含'#include stdafx.h'?当然,这只适用于使用Visual Studio的用户。 – Tallissan