Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Jouer un son avec API

7 réponses
Avatar
Dvlpt.Steganux
Bonjour,

Je dispose d'une fonction sous Visual Basic permettant de faire jouer un
son à Windows en utilisant la librairie Winmm.dll. J'aimerais en faire
autant avec Windev mais je n'arrive pas à traduire ma fonction.


Voici la fonction sous VB :
==============================================
Private Const SND_FILENAME = &H20000
Private Const SND_LOOP = &H8
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA"
(lpszName As Any, ByVal hModule As Long, ByVal dwFlags As Long) As Boolean
==============================================


Et voici l'appel de cette fonction sous VB :
==============================================
PlaySound(ByVal "ring.wav", 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or
SND_NODEFAULT)
==============================================


Je souhaite conserver les constantes en paramètres pour me permettre de
faire lire le son sans bloquer l'execution de mon code et en boucle.



Merci pour vos contributions


Cordialement


Fabien, Steganux

7 réponses

Avatar
Eric Laurent
Bonjour Fabien,

Il y a-t'il une raison pour ne pas utiliser la fonction suivante:

Son("ring.wav", sonBoucle)


Eric.

--
Eric Laurent

(enlever nospam.)
Avatar
Pascal ROY
Constant
SND_FILENAME est un entier = 0x20000
SND_LOOP est un entier = 0x8
SND_ASYNC est un entier = 0x1
SND_NODEFAULT est un entier = 0x2

Local
czFile est une chaine asciiz sur 255

czFile = "ring.wav" //Attention au chemin !
AppelDLL32( "wimm.dll", "PlaySound", &czFile, 0, SND_ASYNC OU SND_FILENAME OU
SND_LOOP ou SND_NODEFAULT)

Je pense que ça devrait ressembler à ça !

Mais pourquoi ne pas utiliser les fonctions de Windev ?
--
Pascal ROY
(Service Informatique - SODALEC)


Dvlpt.Steganux a écrit :
Bonjour,

Je dispose d'une fonction sous Visual Basic permettant de faire jouer un
son à Windows en utilisant la librairie Winmm.dll. J'aimerais en faire
autant avec Windev mais je n'arrive pas à traduire ma fonction.


Voici la fonction sous VB :
============================================= > Private Const SND_FILENAME = &H20000
Private Const SND_LOOP = &H8
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA"
(lpszName As Any, ByVal hModule As Long, ByVal dwFlags As Long) As Boolean
============================================= >

Et voici l'appel de cette fonction sous VB :
============================================= > PlaySound(ByVal "ring.wav", 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or
SND_NODEFAULT)
============================================= >

Je souhaite conserver les constantes en paramètres pour me permettre de
faire lire le son sans bloquer l'execution de mon code et en boucle.



Merci pour vos contributions


Cordialement


Fabien, Steganux




Avatar
Dvlpt.Steganux
Eric Laurent a écrit :
Bonjour Fabien,

Il y a-t'il une raison pour ne pas utiliser la fonction suivante:

Son("ring.wav", sonBoucle)


Eric.




et bien oui, lorsque je fait un Son("ring.wav", sonBoucle), mon fichier
wav n'est joué qu'une seule fois malgres le sonBoucle et en plus la
lecture du son bloque l'éxécution du reste de mon code


Cordialement


Fabien
Avatar
Dvlpt.Steganux
Pascal ROY a écrit :
Constant
SND_FILENAME est un entier = 0x20000
SND_LOOP est un entier = 0x8
SND_ASYNC est un entier = 0x1
SND_NODEFAULT est un entier = 0x2

Local
czFile est une chaine asciiz sur 255

czFile = "ring.wav" //Attention au chemin !
AppelDLL32( "wimm.dll", "PlaySound", &czFile, 0, SND_ASYNC OU
SND_FILENAME OU SND_LOOP ou SND_NODEFAULT)

Je pense que ça devrait ressembler à ça !

Mais pourquoi ne pas utiliser les fonctions de Windev ?





J'ai eu une réponse sir le forum officiel Pcsoft, voici la solution :


CONSTANTE
SND_FILENAME = 0x20000
SND_LOOP = 0x8
SND_ASYNC = 0x1
SND_NODEFAULT = 0x2
FIN

SI PAS API("Winmm.dll", "PlaySound", "ring.wav", Null, SND_ASYNC +
SND_FILENAME + SND_LOOP + SND_NODEFAULT) ALORS
Erreur(ErreurInfo())
FIN


Tu en étais pas loin Pascal.

en tout cas merci pour vos contributions


Cordialement

Fabien
Avatar
Romain PETIT
Pascal ROY a exposé le 26/03/2008 :
Constant
SND_FILENAME est un entier = 0x20000
SND_LOOP est un entier = 0x8
SND_ASYNC est un entier = 0x1
SND_NODEFAULT est un entier = 0x2



Soit ce sont des constantes (à mettre dans le code d'ini), soit ce sont
des variables, mais pas les 2...

SND_FILENAME est un entier = 0x20000
SND_LOOP est un entier = 0x8
SND_ASYNC est un entier = 0x1
SND_NODEFAULT est un entier = 0x2


AppelDLL32( "wimm.dll", "PlaySound", &czFile, 0, SND_ASYNC OU SND_FILENAME OU
SND_LOOP ou SND_NODEFAULT)



Le OR ne se traduit pas par OU en W-langage...

Il faut utiliser
-soit OUBinaire(OUBinaire(OUBinaire(SND_ASYNC,
SND_FILENAME),SND_LOOP),SND_NODEFAULT)
- soit SND_ASYNC+SND_FILENAME+SND_LOOP+SND_NODEFAULT


A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Pascal ROY
Romain PETIT a écrit :
Pascal ROY a exposé le 26/03/2008 :
Constant
SND_FILENAME est un entier = 0x20000
SND_LOOP est un entier = 0x8
SND_ASYNC est un entier = 0x1
SND_NODEFAULT est un entier = 0x2



Soit ce sont des constantes (à mettre dans le code d'ini), soit ce sont
des variables, mais pas les 2...

SND_FILENAME est un entier = 0x20000
SND_LOOP est un entier = 0x8
SND_ASYNC est un entier = 0x1
SND_NODEFAULT est un entier = 0x2


AppelDLL32( "wimm.dll", "PlaySound", &czFile, 0, SND_ASYNC OU
SND_FILENAME OU SND_LOOP ou SND_NODEFAULT)



Le OR ne se traduit pas par OU en W-langage...

Il faut utiliser
-soit OUBinaire(OUBinaire(OUBinaire(SND_ASYNC,
SND_FILENAME),SND_LOOP),SND_NODEFAULT)
- soit SND_ASYNC+SND_FILENAME+SND_LOOP+SND_NODEFAULT


A+



Le Pire c'est que je le savais! :-(

--
Pascal ROY
(Service Informatique - SODALEC)
Avatar
Romain PETIT
Pascal ROY a émis l'idée suivante :
Le Pire c'est que je le savais! :-(



Et moi je savais que tu savais :-)

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)