Как я могу поймать возвращаемое значение Playsound() и сделать что-нибудь еще, если он не находит.wav

Моя проблема заключается в следующем. Я воспроизводю звуки с помощью функции Playsound() без проблем, но если программа не может найти подходящий звуковой файл (потому что он не существует), я хочу напечатать "Файл не существует" вместо того, чтобы программа воспроизводила голос по умолчанию "бип". Есть ли способ получить значение, если игра Playsound() не удалась. Теоретически он возвращает TRUE в случае успеха или FALSE в противном случае, но я не могу поймать ни одного из них с помощью переменной. Я программирую на C и использую DevC++ 4.9.9.2 и CodeBlocks 12.11 без какого-либо успеха.

Спасибо за любую помощь!

My Codes:

//Try_1:
#include <stdio.h>
#include <windows.h>
main()
{
//if (!PlaySound("R2D2.wav",NULL, SND_FILENAME )) // not working
if (!PlaySound("R2D2.wav",NULL, SND_FILENAME | SND_NODEFAULT | SND_ASYNC)) // not working properly
    {
        printf("The file is not exist");
    }

system("pause");
}
/*
If the program can't find the R2D2.wav then there isn't the default "bip" voice thanks to the SND_NODEFAULT, but the printf line will not run so I don't see the "The file is not exist" sentence.
*/
//--------------------------------------------------------------------
//Try_2:
#include <stdbool.h>
#include <stdio.h>
#include <windows.h>
main()
{
//Returns TRUE if successful or FALSE otherwise.
bool x;
x=PlaySound("R2D2.wav",NULL, SND_FILENAME | SND_NODEFAULT | SND_ASYNC); // not working properly
    if (x==FALSE)
    {
        printf("The file is not exist");
    }
system("pause");
}
/*
If the program can't find the R2D2.wav then there isn't the default "bip" voice thanks to the SND_NODEFAULT, but the printf line will not run, so I don't see the "The file is not exist" sentence.
*/

1 ответ

Этот код проверяет файл. Если он существует, то проигрывайте звук. Если нет, распечатайте сообщение.

#include <stdio.h>
#include <string.h>
#include <windows.h>

int isFileExists(char *filename);

main()
{
int b=9;
char *p,Array[9];

strcpy(Array,"R2D2.wav");
p = Array;
b=isFileExists(p);
    if(b==21)
    {
        PlaySound("R2D2.wav",NULL, SND_FILENAME | SND_NODEFAULT | SND_ASYNC);
    }
    else if (b==20)
    {
            printf("The file is not exist");
    }


system("pause");
}

int isFileExists(char *filename)
{
FILE *file;
file = fopen(filename, "r");
    if (file == NULL)
    {
        return 20; //The file is not exist
    }
fclose(file);
return 21; //The file is exist
}
Другие вопросы по тегам