PlaySound 仅播放默认"SystemAsterisk"声音(Windows 10、C++、Python)
PlaySound only plays default "SystemAsterisk" sound (Windows 10, C++, Python)
我正在尝试使用Windows的PlaySound功能,如上所述:https://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspx
然而,没有什么我尝试可以改变它从播放默认声音"SystemAsterisk。"
我尝试使用c++和Python并得到相同的结果:
c++:#include "stdafx.h"
#include <Windows.h>
#include <playsoundapi.h>
int main()
{
PlaySound(TEXT("SystemWelcome"), NULL, SND_ALIAS);
PlaySound(TEXT("C:UsersMeDownloadssound1.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:UsersMeDownloadssound1.wav"
,其中每个开始一个无效的转义序列。一个简单的修复是使用正斜杠,
/
,而不是反斜杠。
Python代码的一个可能问题是SYN_ASYNC
标志。这可能导致函数立即返回。如果脚本立即退出,您可能没有必要听到任何声音。
其他新闻:
-
#include "stdafx.h"
是一个非标准的头,并防止一些读者直接尝试你的代码(他们没有生成的头)。 -
TEXT
已过时,在现代Windows中使用Unicode。 -
return 0;
对于main
来说是不必要的,它是默认的。
只是把它放在那里供新的python用户使用。当我使用IDE(VS Code具体)运行脚本时,我面临着同样的问题。但是,如果我使用命令提示符使用"python script.py"运行脚本,则会播放正确的文件。奇怪。
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 如何将真正的字符串从python c-api转换为python脚本
- Python ctype 'c_char_p' Memory Leak