浏览 5841 次
锁定老帖子 主题:c# 判断系统是否静音等音频操作
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-26
因为自己写的小程序需要在工作时间把本本静音、切换IP的操作,查了win API切换静音是调用同一个函数,无法判断系统是否处在静音的状态。而且旧的API代码对Vista/win7支持不好,这里提供两种解决方案(至于判断系统是否静音尚缺中文资料,故撰写此文以供需要的朋友参考),一种是旧的,下面先贴的代码是大家基本上都能找到的: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms; //CoreAudioApi支持最新的Vista/Win7作業系統,下麵的代碼可能是較早的API版本,不推薦使用 namespace SwitchIP { class VolumeControl { //调用该函数的窗体 public Form myForm; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam); const uint WM_APPCOMMAND = 0x319; const uint APPCOMMAND_VOLUME_UP = 0x0a; const uint APPCOMMAND_VOLUME_DOWN = 0x09; const uint APPCOMMAND_VOLUME_MUTE = 0x08; //增大音量 public void VolumeUp(){ SendMessage(myForm.Handle, WM_APPCOMMAND, 0x30292, APPCOMMAND_VOLUME_UP * 0x10000); } //降低音量 public void VolumeDown() { SendMessage(myForm.Handle, WM_APPCOMMAND, 0x30292, APPCOMMAND_VOLUME_DOWN * 0x10000); } //该函数会自动在静音和非静音状态下切换 public void VolumeMute() { SendMessage(myForm.Handle, WM_APPCOMMAND, 0x200eb0, APPCOMMAND_VOLUME_MUTE * 0x10000); } } }
第二种也是推荐的方法,仅在win7上测试过: 这里引用了国外友人封装好的Audio类(包含更多的音频操作),具体代码下载可以参考如下链接 using CoreAudioApi; /*QFord@QQ.COM 需要引用CoreAudioApi.dll 可在下面的链接中找到 */ ...... private MMDevice defaultDevice = null; ...... /*參考資料 http://www.codeproject.com/KB/vista/CoreAudio.aspx?msg=2747721 */ //判斷當前系統揚聲器狀態 private bool isMuted() { return defaultDevice.AudioEndpointVolume.Mute; } //靜音 private void setMute() { defaultDevice.AudioEndpointVolume.Mute = true; } //解除靜音 private void setUnMute() { defaultDevice.AudioEndpointVolume.Mute = false; } //初始化MMDevice private void muteInit() { MMDeviceEnumerator devEnum = new MMDeviceEnumerator(); defaultDevice = devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-07
请问CoreAudioApi.dll怎么使用,与代码怎么结合?
|
|
返回顶楼 | |
发表时间:2010-10-06
看看~~~~~~~
|
|
返回顶楼 | |