Как я могу поймать возвращаемое значение 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
}