2009-05-27 9 views

Répondre

1

This CodeProject article montre comment vous contrôlez entièrement les paramètres de Windows Mixer, y compris le volume principal du système. Il semble envelopper la plupart des trucs horribles de l'API Win, donc c'est probablement le moyen le plus facile d'y aller.

1

Réponse simple: Vous devez utiliser interop.

j'ai écrit une bibliothèque pour faire toutes sortes de choses son pour vous, tho:

WinnMM.Net: http://winmm.codeplex.com/

+1

La bibliothèque semble bien, mais les exemples de code seraient vraiment utiles. Pourriez-vous s'il vous plaît en ajouter? –

4

Ce qu'il fait pour mon Windows 7:

Télécharger NAudio (http: //naudio.codeplex.com/releases/view/79035) et référence la DLL dans votre projet. Puis ajoutez le code suivant:

 try 
     { 
      //Instantiate an Enumerator to find audio devices 
      NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator(); 
      //Get all the devices, no matter what condition or status 
      NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.All); 
      //Loop through all devices 
      foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol) 
      { 
       try 
       { 
        //Set at maximum volume 
        dev.AudioEndpointVolume.MasterVolumeLevel = 0; 

        //Get its audio volume 
        System.Diagnostics.Debug.Print("Volume of " + dev.FriendlyName + " is " + dev.AudioEndpointVolume.MasterVolumeLevel.ToString()); 

        //Mute it 
        dev.AudioEndpointVolume.Mute = true; 
        System.Diagnostics.Debug.Print(dev.FriendlyName + " is muted"); 
       } 
       catch (Exception ex) 
       { 
        //Do something with exception when an audio endpoint could not be muted 
        System.Diagnostics.Debug.Print(dev.FriendlyName + " could not be muted"); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      //When something happend that prevent us to iterate through the devices 
      System.Diagnostics.Debug.Print("Could not enumerate devices due to an excepion: " + ex.Message); 
     } 
+0

Merci pour ça. Ce code fonctionne sur ma machine pour couper le volume. – Anshul

Questions connexes