Distriggers volume di Windows usando C #

Qualcuno sa come distriggersre automaticamente il volume di Windows XP usando C #?

Dichiaralo per P / Invoke:

private const int APPCOMMAND_VOLUME_MUTE = 0x80000; private const int WM_APPCOMMAND = 0x319; [DllImport("user32.dll")] public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 

E poi usa questa linea per silenziare / ritriggersre il suono.

 SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr) APPCOMMAND_VOLUME_MUTE); 

Cosa puoi usare per Windows Vista / 7 e probabilmente anche per 8:

È ansible utilizzare NAudio (http://naudio.codeplex.com/releases/view/79035). Scarica l’ultima versione. Estrai le DLL e fai riferimento alla DLL NAudio nel tuo progetto C #.

Quindi aggiungere il seguente codice per scorrere tutti i dispositivi audio disponibili e distriggersrlo, se ansible.

  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 { //Show us the human understandable name of the device System.Diagnostics.Debug.Print(dev.FriendlyName); //Mute it dev.AudioEndpointVolume.Mute = true; } catch (Exception ex) { //Do something with exception when an audio endpoint could not be muted } } } catch (Exception ex) { //When something happend that prevent us to iterate through the devices } 

Mi sono imbattuto in questo progetto che potrebbe essere di interesse, se stai usando Vista.

Vedi Come distriggersre a livello di programmazione il volume di Windows XP usando C #?

 void SetPlayerMute(int playerMixerNo, bool value) { Mixer mx = new Mixer(); mx.MixerNo = playerMixerNo; DestinationLine dl = mx.GetDestination(Mixer.Playback); if (dl != null) foreach (MixerControl ctrl in dl.Controls) if (ctrl is MixerMuteControl) { ((MixerMuteControl)ctrl).Value = (value) ? 1 : 0; break; } } 

Probabilmente vorrai usare i comandi MCI: http://msdn.microsoft.com/en-us/library/ms709461(VS.85).aspx

Dovrei aggiungere che mentre questo ti darà un buon controllo generale sui mixer di input e output in Windows, potresti avere qualche difficoltà nel fare controlli dettagliati, come l’triggerszione del boost del microfono, ecc.

Oh, e se sei su Vista, allora dimenticalo. È un modello completamente diverso.

È ansible utilizzare P / Invoke come spiegato qui: http://www.microsoft.com/indonesia/msdn/pinvoke.aspx . In realtà passa attraverso i passaggi nell’Attività 1: Distriggers audio e Distriggers audio nella parte superiore.