Я пытаюсь использовать функцию PlaySound в Windows, как упомянуто здесь: 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:\Users\Me\Downloads\sound1.wav"), NULL, SND_FILENAME);
return 0;
}
Обе вышеуказанные попытки воспроизвести другой звук по-прежнему возвращают звук Звездочки по умолчанию.
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"
где каждый \
запускает недопустимую escape-последовательность. Одно простое решение — использовать косые черты, /
, вместо \
обратные косые.
Одной из возможных проблем с вашим кодом Python является SYN_ASYNC
флаг. Это может привести к немедленному возврату функции. И если сценарий немедленно завершится, вы не обязательно услышите какой-либо звук.
В других новостях:
#include "stdafx.h"
является нестандартным заголовком и не позволяет некоторым читателям напрямую пробовать ваш код (у них нет сгенерированного заголовка).TEXT
устарел, используйте Unicode в современной Windows.return 0;
не нужен для main
это по умолчанию.Других решений пока нет …