-
Problème avec PlaySound
Salut à tous,
J'explique brièvement mon problème : dans une classe je veux jouer des sons, j'utilise la méthode PlaySound de mmsystem.
Voici la ligne que j'utilise :
Code:
PlaySound('C:\*********.wav', handle,SND_ASYNC);
J'ai fais une méthode de test, un Panel1Click qui joue bien le son quand je lui demande. Mais j'essaie de mettre le PlaySound dans une méthode de ma classe, méthode que j'appelle dans mon Panel1Click.
A chaque fois que le son aurait dû être joué, je reçois l'erreur suivante :
Project ***.exe raised exception class EAccessViolation with message 'Access Violation at address 00000000.
Read of address 00000000'. Process stopped. Use Step or Run to continue.
En bref, le PlaySound ne marche que dans la méthode Panel1Click et pas dans les autres méthodes de ma classe...
Merci d'avance si vous avez une idée du problème...
Ou s'il existe une autre méthode que PlaySound pour jouer des sons; qui n'ait pas ce genre de problème...
-
as-tu testé le TMediaPlayer ?
si ton but est uniquement de jouer un fichier son,li est largement suffisant pour cela.
Je n'ai pas ses caractéristiques en tête, mais tu dois définir le fichier que tu veux lire (soit dans le code, soit par un Topendialog), puis tu dispose de méthodes pour lire, pour te positionner dans ton fichier ...
@+
richard
-
Pour le TMediaPlayer, ayant pas mal de sons à jouer je ne sais pas si c'est la meilleure solution.
Mais après une recherche sur internet (pourtant longtemps infructueuse), j'ai trouvé la solution, alors je la mets si jamais quelqu'un a le même problème :
Il faut mettre HInstance en 2ème argument et le son se joue toujours semble-t-il, où qu'il soit dans le code. La ligne est donc :
Code:
PlaySound('C:\*********.wav', HInstance, SND_ASYNC);
(le SND_ASYNC dépend de ce qu'on veut)