2010-02-28 26 views
5

Tôi đang học C# và WPF và có ý tưởng về một tiện ích nhỏ. Tôi muốn một nút lớn màu đỏ sẽ chỉ làm một việc: hoàn toàn tắt/tắt tiếng tất cả các âm thanh Windows (tiếng bíp hệ thống, WMP, đầu DVD, vv ...) Tôi đã khám phá trình duyệt đối tượng trong VS 2008 nhưng không thể dường như tìm thấy những gì tôi cần: Một tiếng câm sẽ ảnh hưởng đến tất cả Windows.Làm sao tắt tiếng Windows bằng WPF?

Có phải là System.Windows.Input.MediaCommands.MuteVolume và tôi không nhận được cách sử dụng?

Cảm ơn mọi con trỏ đi đúng hướng bằng C# và/hoặc WPF. :)

Trả lời

6

Tôi khá chắc chắn rằng lệnh được sử dụng bởi các điều khiển WPF riêng lẻ để tắt tiếng. Ví dụ, nếu CommandTarget là một MediaElement, nó sẽ tắt âm thanh của nó khi lệnh đó được thực hiện. Thật không may, tôi nghĩ rằng bạn sẽ phải làm một công việc nhiều hơn một chút. Một google nhanh chóng đưa ra một số ví dụ để làm các p/gọi bằng cách nào, mà có lẽ là cách duy nhất để làm điều đó như bây giờ trong .NET:

Đối với XP: MSDN

Đối với Vista/7: CodeProject

+0

Cảm ơn Abe. Tôi đánh giá cao các con trỏ. – Peter

1

Bạn có thể sử dụng NAudio (http://naudio.codeplex.com/releases/view/79035). Tải xuống phiên bản mới nhất. Giải nén các tệp DLL và tham khảo DLL NAudio trong dự án C# của bạn.

Sau đó, thêm mã sau đây để lặp qua tất cả các thiết bị âm thanh có sẵn và tắt tiếng nếu có thể.

 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 
     } 
Các vấn đề liên quan