IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

FAQ Gestion du volume


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut FAQ Gestion du volume
    hello tout le monde apres un problème il y en a toujours un autre donc voila...

    j'ai navigué un peu dans la et j'ai trouvé une fonction que je trouve assez intéressante

    gérer le volume sous windows
    FAQ
    Comment régler le volume du son dans Windows ?
    [haut]
    auteur : Bibmari
    Pour régler le volume du son dans Windows, il va falloir utiliser deux fonctions de l'API Win32 : waveOutGetVolume pour récupérer le volume courant, et waveOutSetVolume pour le positionner.
    Ces deux fonctions sont déclarées dans le header mmsystem.h.
    Le Handle utilisé sera NULL pour impacter le son dans son intégralité. Cette usage n'est pas documenté dans la MSDN, mais il semble qu'il l'ait été dans une version précédente.

    Le code suivant montre comment récupérer le volume actuel du mixer, le modifier, et retourner à la valeur précédente.


    #include <mmsystem.h>
    ...
    unsigned long volume;
    waveOutGetVolume(NULL, (LPDWORD) &volume);
    waveOutSetVolume(NULL, (DWORD)0x0);
    waveOutSetVolume(NULL, volume);

    le problème c'est que je ne comprends pas comment utiliser cette fonction pour augmenter, baisser ou fixer le volume à ma convenance

    est-ce que quelqun peut m'éclairer svp??

    merci
    Mangacker

  2. #2
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Si on regarde l'aide Win32 au sujet de waveOutSetVolum, on obtient ceci :
    The waveOutSetVolume function sets the volume level of the specified waveform-audio output device.

    MMRESULT waveOutSetVolume(

    HWAVEOUT hwo,
    DWORD dwVolume
    );


    Parameters

    hwo

    Handle of an open waveform-audio output device. This parameter can also be a device identifier.

    dwVolume

    New volume setting. The low-order word contains the left-channel volume setting, and the high-order word contains the right-channel setting. A value of 0xFFFF represents full volume, and a value of 0x0000 is silence.
    If a device does not support both left and right volume control, the low-order word of dwVolume specifies the volume level, and the high-order word is ignored.



    Return Values

    Returns MMSYSERR_NOERROR if successful or an error otherwise. Possible error values include the following:

    MMSYSERR_INVALHANDLE Specified device handle is invalid.
    MMSYSERR_NODRIVER No device driver is present.
    MMSYSERR_NOMEM Unable to allocate or lock memory.
    MMSYSERR_NOTSUPPORTED Function is not supported.
    Donc le code proposé dans l'aide peut être commenté comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    waveOutGetVolume(NULL, (LPDWORD) &volume);//volume courant
    waveOutSetVolume(NULL, (DWORD)0x0);//je coupe le son
    waveOutSetVolume(NULL, volume);//je remets l'ancien volume

  3. #3
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    ok dans ce cas on doit pouvoir modifier le volume de cette manière non??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	volume = 50;
    	waveOutSetVolume(NULL, volume);
    ou d'une manière un peu différente (comme ça ça marche pas )

  4. #4
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Si on regarde l'aide précisément, on trouve ceci :
    The low-order word contains the left-channel volume setting, and the high-order word contains the right-channel setting
    Je comprends donc que le poids faible de ta variable correspond au volume de canal gauche et le poids fort de ta variable correspond au volume de canal droit, le tout en hexadécimal.
    Après je n'ai pas testé mais on trouve de nombreux codes VB sur le net qui appuie ma théorie.
    Par contre, je n'ai pas réussi à traduire les exemples d'augmentation de volume que j'ai trouvé en VB en C++...
    Désolé.

  5. #5
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    j'ai essayé de mettre ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    waveOutSetVolume(NULL, 0xFFFF);
    le problème c'est que ça n'agit que sur la partie "Wave" de la table de mixage

    ya t-il une solution pour que le volume général soit modifié??

    ++

  6. #6
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    En fouillant sur le net, je suis tombé sur la méthode mixerOpen de l'API Win32 qui pourrait correspondre mais je ne sais pas comment elle marche

  7. #7
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    le problème c'est que c'est pas compatible vista...

    et moi j'ai vista!!

  8. #8
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Dans Vista je crois qu'il faut mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, "open", "sndvol.exe", 0, 0, SW_SHOW);

  9. #9
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    Citation Envoyé par Crayon Voir le message
    Dans Vista je crois qu'il faut mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, "open", "sndvol.exe", 0, 0, SW_SHOW);
    merci ça fonctionne

  10. #10
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par Mangacker Voir le message
    et moi j'ai vista!!
    Dis comme ca, on dirait une maladie !

  11. #11
    Membre émérite
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Par défaut
    Citation Envoyé par Sunchaser Voir le message
    Dis comme ca, on dirait une maladie !
    +1
    Et surtout si c'est pas une version englaise

    ++

  12. #12
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    Citation Envoyé par Sunchaser Voir le message
    Dis comme ca, on dirait une maladie !
    c'est un peu le cas je dois dire

    depuis que j'ai vista sur mon tout nouveau portable (6 mois environ) j'ai eu 3 blue screen (ce que j'avais jamais eu sur xp!!), j'ai du réinstaller 1 fois, j'ai pas pu réinstallé xp dessus à cause de problèmes hardware et drivers...

    donc oui c'est bien une sorte de maladie
    (pas contagieuse j'espere mais ça c'est pas encore sûre, la preuve y'en a de plus en plus qui ont vista....)

Discussions similaires

  1. cherche lib de gestion de volume
    Par Arcyno dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 05/01/2015, 09h54
  2. Gestion du volume de deux sons distincts
    Par nebverg dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 26/05/2008, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo