Ничего не слышно при использовании PlaySound

Я разрабатываю простое приложение для воспроизведения файлов WAV с помощью PlaySound с помощью этого кода:

#region DllImport
private enum Flags
{
    SND_SYNC = 0x0000,
    SND_ASYNC = 0x0001,
    SND_NODEFAULT = 0x0002,
    SND_MEMORY = 0x0004,
    SND_LOOP = 0x0008,
    SND_NOSTOP = 0x0010,
    SND_NOWAIT = 0x00002000,
    SND_ALIAS = 0x00010000,
    SND_ALIAS_ID = 0x00110000,
    SND_FILENAME = 0x00020000,
    SND_RESOURCE = 0x00040004
}
[DllImport("CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]
private extern static int MobilePlaySound(string szSound, IntPtr hMod, int flags);
public void PlaySound(string fileName)
{
    MobilePlaySound(fileName, IntPtr.Zero, (int)Flags.SND_SYNC);
}
#endregion

public Form1()
{
    InitializeComponent();
    openFileDialog1.ShowDialog();
    PlaySound(openFileDialog1.FileName);
}

Но когда я запускаю его и выбираю WAV-файл (с 2 минутами звука), я ничего не слышу.

Что я должен сделать? Спасибо.


person Nathan Campos    schedule 14.11.2009    source источник


Ответы (2)


Как указывает curtisk, вы должны попробовать использовать SND_FILENAME, чтобы сообщить API, что вы передаете имя файла. Кроме того, обратите внимание, что метод PlaySound имеет возвращаемое значение, поэтому стоит проверить, что вы возвращаете, согласно документация MSDN, он вернет 0 в случае успеха и ненулевое значение в противном случае.

person Chris    schedule 16.11.2009

Вы должны использовать флаг SND_FILENAME вместо SND_SYNC, поскольку вы указываете файл, попробуйте его и посмотрите, будут ли у вас лучшие результаты...

person curtisk    schedule 15.11.2009