C# 监听系统的语音调节

 

C# 监听系统的语音调节

当用户通过系统的语音调节面板调节语音时,应用程序如何监听到这种控制?
这需要使用到winmm.dll中的系统函数

具体代码如下

 

public const int MMSYSERR_NOERROR = 0; public const int MM_MIXM_CONTROL_CHANGE = 0x3D1; public const int CALLBACK_WINDOW = 0x10000; [DllImport("winmm.dll", CharSet = CharSet.Ansi)] /// 打开指定的混频器,在应用程序关闭该句柄前保证该设备不被移走 private static extern int mixerOpen(out int phmx, int uMxId, int dwCallback, int dwInstance, int fdwOpen); public static bool MonitorControl(int iw) // iw is the window handle { int rc = -1; bool retValue = false; int hmixer; rc = mixerOpen(out hmixer,0,iw,0,CALLBACK_WINDOW); return retValue = (MMSYSERR_NOERROR == rc) ? true : false; } 在 应用程序(继承了 control的控制)中加入下面的内容 //这部分可以放到 onload或者 构造函数中 MonitorControl((int)this.Handle); [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] protected override void WndProc(ref Message m) { //语音变化 if (m.Msg == MM_MIXM_CONTROL_CHANGE) { //TODO } base.WndProc(ref m); }
即首先要注册语音控制(我也不清楚是不是叫注册,但一定要调用   MonitorControl方法,否则是无效的
然后是处理windows消息

你可能感兴趣的:(windows,C#,callback)