PlaySound воспроизводит только «SystemAsterisk» по умолчанию. звук (Windows 10, C ++, Python)

Я пытаюсь использовать функцию 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?

0

Решение

Это работает для меня в 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это по умолчанию.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]