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 Discussion :

modifier le volume sonore général dans windows 7


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut modifier le volume sonore général dans windows 7
    Bonsoir,

    Existe t-il un moyen simple en C d'agir sur le volume principal de windows dans windows 7 ? Ce qui m'intéresse c'est "juste" l'augmentation et diminution du son, la fonction mute ne me sera pas utile.

    Faut-il installer une librairie spécifique ?

    Merci à vous!

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    de mémoire il faut regarder du côté de l'API win32 et notamment tout ce qui est IAudioEndpointVolume

    une recherche rapide évoque IAudioEndpointVolume::SetMasterVolumeLevelScalar, donc à travers C++ c'est trivial, je sais pas si c'est facilement accessible en C directement par contre

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut
    Merci je vais regarder de ce côté.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 168
    Points
    168
    Par défaut
    Exemple en C sur Windows Vista et supérieur ..
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #include <stdio.h>
    #include <initguid.h>
    #include <mmdeviceapi.h>
    #include <endpointvolume.h>
     
    DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C, 0x8E, 0x3D, 0xC4, 0x57, 0x92, 0x91, 0x69, 0x2E);
    DEFINE_GUID(IID_IMMDeviceEnumerator,  0xA95664D2, 0x9614, 0x4F35, 0xA7, 0x46, 0xDE, 0x8D, 0xB6, 0x36, 0x17, 0xE6);
    DEFINE_GUID(IID_IAudioEndpointVolume, 0x5CDF2C82, 0x841E, 0x4546, 0x97, 0x22, 0x0C, 0xF7, 0x40, 0x78, 0x22, 0x9A);
     
    IAudioEndpointVolume *InitVolume(void)
    {
      IMMDevice *Dev;
      IMMDeviceEnumerator *DevEnum;
      IAudioEndpointVolume *EndpointVolume;
     
      CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void **)&DevEnum);
      DevEnum->lpVtbl->GetDefaultAudioEndpoint(DevEnum, eRender, eConsole, &Dev);
      Dev->lpVtbl->Activate(Dev, &IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, NULL, (void **)&EndpointVolume);
      DevEnum->lpVtbl->Release(DevEnum);
      Dev->lpVtbl->Release(Dev);
      return EndpointVolume;
    }
     
    float GetVolume(IAudioEndpointVolume *endpointVolume)
    {
      float Volume = .0;
      endpointVolume->lpVtbl->GetMasterVolumeLevelScalar(endpointVolume, &Volume);
      return Volume;
    }
     
    void SetVolume(IAudioEndpointVolume *endpointVolume, float Volume)
    {
      endpointVolume->lpVtbl->SetMasterVolumeLevelScalar(endpointVolume, Volume, 0);
    }
     
    void FreeVolume(IAudioEndpointVolume *endpointVolume)
    {
      endpointVolume->lpVtbl->Release(endpointVolume);
    }
     
    int main(void)
    {
      IAudioEndpointVolume *EndpointVolume;
     
      CoInitialize(0);
      EndpointVolume = InitVolume();
      printf("Volume (Avant) : %f\n", GetVolume(EndpointVolume));
      SetVolume(EndpointVolume, .25);
      printf("Volume (Apres) : %f\n", GetVolume(EndpointVolume));
      FreeVolume(EndpointVolume);
      CoUninitialize();
      return 0;
    }

Discussions similaires

  1. Modifier les mots de passe dans Windows
    Par Blizz4rd dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 09/02/2010, 13h40
  2. Comment modifier dossiers et fichiers dans Windows ?
    Par totoAussi dans le forum Windows
    Réponses: 2
    Dernier message: 10/11/2009, 15h12
  3. Controle de volume sonore de Windows
    Par halimi dans le forum MATLAB
    Réponses: 5
    Dernier message: 22/01/2009, 06h01
  4. Réponses: 4
    Dernier message: 01/07/2007, 15h10
  5. Volume ordi portable "bridé" dans windows xp?
    Par arnaud_verlaine dans le forum Ordinateurs
    Réponses: 2
    Dernier message: 23/03/2006, 13h15

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