亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mixer.cs

?? 該即時通訊系統系統能夠實現像QQ一樣的通訊功能
?? CS
字號:
using System;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace LanMsg.AV
{
	public class Mixer
	{
		IntPtr m_hmx;
		public event System.EventHandler MixerControlChange;
		private event  System.EventHandler PreMixerControlChange;
		private void OnMixerControlChange(int controlid)
		{
			if(this.PreMixerControlChange!=null)this.PreMixerControlChange(this,System.EventArgs.Empty);
			if(this.MixerControlChange!=null)this.MixerControlChange(this,System.EventArgs.Empty);
		}
		MixerCallbackListener listener;
		public Mixer(Control c)
		{
			this.listener=new MixerCallbackListener(this);
			this.listener.AssignHandle(c.Handle);
			Mixer.mixerOpen(ref m_hmx,0,(int)c.Handle,0,Mixer.MIXER_OBJECTF_MIXER|0x00010000);
		}
		public IntPtr Handle
		{
			get{return this.m_hmx;}
		}
		public void Close()
		{
		//	this.listener.ReleaseHandle();
			Mixer.mixerClose(this.m_hmx);
		}
	
		private class MixerCallbackListener:NativeWindow
		{
			private Mixer mixer;
			public MixerCallbackListener(Mixer mixer)
			{
				this.mixer=mixer;
			}
			protected override void WndProc(ref Message m)
			{
				if(m.Msg==Mixer.MM_MIXM_CONTROL_CHANGE)
				{
					this.mixer.OnMixerControlChange((int)m.LParam);
				}
				base.WndProc (ref m);
			}

		}
		public class MixerControlDetail
		{
			private int component_type;
			Mixer mixer;
			uint lineid;
			int mute_controlid,volume_controlid;
			string name;
			int max,min;
			bool mute;int volume;
			public string Name
			{
				get{return this.name;}
			}
			public int Volume
			{
				get{return this.volume;}
				set{this.volume=value;this.SetValue(volume_controlid,value);}
			}
			public bool Mute
			{
				get{return this.mute;}
				set
				{
					if(this.mute!=value)
					{
						this.mute=value;
						if(value)
							this.SetValue(mute_controlid,1);
						else
							this.SetValue(mute_controlid,0);
					}
				}
			}
			public int Max
			{
				get{return this.max;}
			}
			public int Min
			{
				get{return this.min;}
			}
			public MixerControlDetail(Mixer mixer,int component_type)
			{
				this.component_type=component_type;
				this.mixer=mixer;
				this.Initialize();
				mixer.PreMixerControlChange+=new EventHandler(mixer_PreMixerControlChange);
			}
			private MIXERLINE GetLine()
			{
				MIXERLINE ml=new MIXERLINE();
				if(this.component_type==MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE)
				{
					MIXERLINE inLine=new MIXERLINE();
					inLine.cbStruct=Marshal.SizeOf(inLine);
					inLine.dwComponentType=Mixer.MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
					Mixer.mixerGetLineInfo((int)mixer.Handle,ref inLine,Mixer.MIXER_GETLINEINFOF_COMPONENTTYPE);
					for(int i=0;i<inLine.cConnections;i++)
					{
						ml=new MIXERLINE();
						ml.cbStruct=Marshal.SizeOf(ml);
						ml.dwSource=(uint)i;
						ml.dwDestination=inLine.dwDestination;
						Mixer.mixerGetLineInfo((int)mixer.Handle,ref ml,Mixer.MIXER_GETLINEINFOF_SOURCE);
						if(ml.dwComponentType==this.component_type)break;
					}
				}
				else
				{
					ml=new MIXERLINE();
					ml.cbStruct=Marshal.SizeOf(ml);
					ml.dwComponentType=this.component_type;
					Mixer.mixerGetLineInfo((int)mixer.Handle,ref ml, Mixer.MIXER_OBJECTF_HMIXER|Mixer.MIXER_GETLINEINFOF_COMPONENTTYPE);
				}
				return ml;
			}
			private void Initialize()
			{
				MIXERLINE ml=this.GetLine();
				this.lineid=ml.dwLineID;
				this.name=ml.szName;
				MIXERCONTROL ctl=this.GetLineControl(Mixer.MIXERCONTROL_CONTROLTYPE_VOLUME);
				this.min=ctl.Bounds.dwMinimum;
				this.max=ctl.Bounds.dwMaximum;
				this.volume_controlid=ctl.dwControlID;
				ctl=this.GetLineControl(Mixer.MIXERCONTROL_CONTROLTYPE_MUTE);
				this.mute_controlid=ctl.dwControlID;

				this.volume=this.GetValue(this.volume_controlid);
				this.mute=this.GetValue(this.mute_controlid)==0;
			}
			private int GetValue(int controlid)
			{
				IntPtr volumes=Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(int))*2);
				Marshal.WriteInt32(volumes,0);
				LanMsg.AV.MIXERCONTROLDETAILS details=new MIXERCONTROLDETAILS();
				details.cbStruct=Marshal.SizeOf(details);
				details.cChannels=1;
				details.cbDetails=4;
				details.cMultipleItems=0;
				details.dwControlID=controlid;
				details.paDetails=(int)volumes;
				Mixer.mixerGetControlDetails(mixer.Handle,ref details,0);
				int ret=Marshal.ReadInt32(volumes);
				Marshal.FreeCoTaskMem(volumes);
				return ret;
			}
			private void SetValue(int controlid,int value)
			{
				IntPtr volumes=Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(int))*2);
				Marshal.WriteInt32(volumes,value);
				LanMsg.AV.MIXERCONTROLDETAILS details=new MIXERCONTROLDETAILS();
				details.cbStruct=Marshal.SizeOf(details);
				details.cChannels=1;
				details.cbDetails=4;
				details.cMultipleItems=0;
				details.dwControlID=controlid;
				details.paDetails=(int)volumes;
				int r=Mixer.mixerSetControlDetails(mixer.Handle,ref details,0);
				System.Diagnostics.Trace.WriteLine(r.ToString());
				int ret=Marshal.ReadInt32(volumes);
				System.Diagnostics.Trace.WriteLine(ret.ToString());
				Marshal.FreeCoTaskMem(volumes);
			}
			private MIXERCONTROL GetLineControl(int controlType)
			{
				MIXERCONTROL mxc=new MIXERCONTROL();mxc.Bounds=new Volume();
				MIXERLINECONTROLS mxlc=new MIXERLINECONTROLS();

				IntPtr p=Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(MIXERCONTROL)));
				Marshal.StructureToPtr(mxc,p,true);

				mxlc.cbStruct = Marshal.SizeOf(typeof(MIXERLINECONTROLS));
				mxlc.dwLineID =this.lineid;
				mxlc.dwControlType =controlType;
				mxlc.cControls = 1;
				mxlc.cbmxctrl = Marshal.SizeOf(typeof(MIXERCONTROL));
				mxlc.pamxctrl = p;
				Mixer.mixerGetLineControls((int)mixer.Handle,ref mxlc,Mixer.MIXER_OBJECTF_HMIXER |Mixer.MIXER_GETLINECONTROLSF_ONEBYTYPE);
				mxc=(MIXERCONTROL)Marshal.PtrToStructure(mxlc.pamxctrl,typeof(MIXERCONTROL));
				return mxc;
			}

			private void mixer_PreMixerControlChange(object sender, EventArgs e)
			{
				this.Initialize();
			}
		}


		#region 
		[DllImport("winmm.dll", EntryPoint="mixerClose")]
		public static extern int mixerClose (
			int hmx
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetControlDetails")]
		public static extern int mixerGetControlDetails (
			int hmxobj,
			ref MIXERCONTROLDETAILS pmxcd,
			int fdwDetails
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetDevCaps")]
		public static extern int mixerGetDevCaps (
			int uMxId,
			MIXERCAPS pmxcaps,
			int cbmxcaps
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetID")]
		public static extern int mixerGetID (
			int hmxobj,
			ref int pumxID,
			int fdwId
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetLineControls")]
		public static extern int mixerGetLineControls (
			int hmxobj,
			ref MIXERLINECONTROLS pmxlc,
			int fdwControls
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetLineInfo")]
		public static extern int mixerGetLineInfo (
			int hmxobj,
			ref MIXERLINE pmxl,
			int fdwInfo
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetNumDevs")]
		public static extern int mixerGetNumDevs ();
		[DllImport("winmm.dll", EntryPoint="mixerMessage")]
		public static extern int mixerMessage (
			int hmx,
			int uMsg,
			int dwParam1,
			int dwParam2
			);
		[DllImport("winmm.dll", EntryPoint="mixerOpen")]
		public static extern int mixerOpen (
			ref int phmx,
			int uMxId,
			int dwCallback,
			int dwInstance,
			int fdwOpen
			);
		[DllImport("winmm.dll", EntryPoint="mixerSetControlDetails")]
		public static extern int mixerSetControlDetails (
			int hmxobj,
			ref MIXERCONTROLDETAILS pmxcd,
			int fdwDetails
			);
		[DllImport("winmm.dll", EntryPoint="mixerClose")]
		public static extern int mixerClose (
			IntPtr hmx
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetControlDetails")]
		public static extern int mixerGetControlDetails (
			IntPtr hmxobj,
			ref MIXERCONTROLDETAILS pmxcd,
			uint fdwDetails
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetDevCaps")]
		public static extern int mixerGetDevCaps (
			IntPtr uMxId,
			ref MIXERCAPS pmxcaps,
			int cbmxcaps
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetID")]
		public static extern int mixerGetID (
			IntPtr hmxobj,
			ref int pumxID,
			uint fdwId
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetLineControls")]
		public static extern int mixerGetLineControls (
			int hmxobj,
			ref MIXERLINECONTROLS pmxlc,
			uint fdwControls
			);
		[DllImport("winmm.dll", EntryPoint="mixerGetLineInfo")]
		public static extern int mixerGetLineInfo (
			int hmxobj,
			ref MIXERLINE pmxl,
			uint fdwInfo
			);
		[DllImport("winmm.dll", EntryPoint="mixerMessage")]
		public static extern int mixerMessage (
			IntPtr hmx,
			int uMsg,
			int dwParam1,
			int dwParam2
			);
		[DllImport("winmm.dll", EntryPoint="mixerOpen")]
		public static extern int mixerOpen (
			ref IntPtr phmx,
			int uMxId,
			int dwCallback,
			int dwInstance,
			uint fdwOpen
			);
		[DllImport("winmm.dll", EntryPoint="mixerSetControlDetails")]
		public static extern int mixerSetControlDetails (
			IntPtr hmxobj,
			ref MIXERCONTROLDETAILS pmxcd,
			uint fdwDetails
			);
		public const uint MIXER_OBJECTF_HANDLE    =0x80000000;
		public const int MIXER_OBJECTF_MIXER     =0x00000000;
		public const uint MIXER_OBJECTF_HMIXER    =(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER);
		public const int MIXER_OBJECTF_WAVEOUT   =0x10000000;
		//public const int MIXER_OBJECTF_HWAVEOUT  =(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT);
		public const int MIXER_OBJECTF_WAVEIN    =0x20000000;
		//public const int MIXER_OBJECTF_HWAVEIN   =(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN);
		public const int MIXER_OBJECTF_MIDIOUT   =0x30000000;
		//public const int MIXER_OBJECTF_HMIDIOUT  =(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT);
		public const int MIXER_OBJECTF_MIDIIN    =0x40000000;
		//public const int MIXER_OBJECTF_HMIDIIN   =(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN);
		public const int MIXER_OBJECTF_AUX       =0x50000000;

		public const int MIXER_GETLINEINFOF_DESTINATION     = 0x00000000;
		public const int MIXER_GETLINEINFOF_SOURCE           =0x00000001;
		public const int  MIXER_GETLINEINFOF_LINEID           =0x00000002;
		public const int  MIXER_GETLINEINFOF_COMPONENTTYPE    =0x00000003;

		public const int MIXERLINE_COMPONENTTYPE_DST_FIRST       =0x00000000;
		public const int MIXERLINE_COMPONENTTYPE_DST_SPEAKERS    =(MIXERLINE_COMPONENTTYPE_DST_FIRST + 4);
		public const int MIXERLINE_COMPONENTTYPE_SRC_FIRST       =0x00001000;
		public const int MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE  =(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3);
		public const int MIXERLINE_COMPONENTTYPE_DST_WAVEIN      =(MIXERLINE_COMPONENTTYPE_DST_FIRST + 7);

		public const int MIXERCONTROL_CT_CLASS_FADER         =0x50000000;
		public const int MIXERCONTROL_CT_UNITS_UNSIGNED      =0x00030000;
public const int MIXERCONTROL_CT_CLASS_SWITCH        =0x20000000;
public const int MIXERCONTROL_CT_SC_SWITCH_BOOLEAN   =0x00000000;
public const int MIXERCONTROL_CT_UNITS_BOOLEAN      = 0x00010000;
public const int MIXERCONTROL_CONTROLTYPE_BOOLEAN        =(MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN);
		public const int MIXERCONTROL_CONTROLTYPE_FADER          =(MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED);
		public const int MIXERCONTROL_CONTROLTYPE_VOLUME         =(MIXERCONTROL_CONTROLTYPE_FADER + 1);
		public const int MIXERCONTROL_CONTROLTYPE_MUTE          =(MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2);
		public const int MIXER_GETLINECONTROLSF_ONEBYTYPE        =0x00000002;
		public const int MIXER_GETCONTROLDETAILSF_VALUE     = 0x00000000;

public const int MM_MIXM_LINE_CHANGE     =0x3D0;       /* mixer line change notify */
public const int MM_MIXM_CONTROL_CHANGE  =0x3D1;       /* mixer control change notify */
		#endregion
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu色噜噜精品一区二区| 成人美女视频在线观看18| 欧美日韩国产片| 亚洲一区二区三区四区的| 欧美自拍偷拍一区| 亚洲成av人片| 日韩你懂的在线观看| 国产在线精品不卡| 国产精品丝袜一区| 91丨九色porny丨蝌蚪| 亚洲电影一区二区| 日韩欧美国产一区二区三区| 国产麻豆一精品一av一免费| 免费三级欧美电影| 2020日本不卡一区二区视频| 国产jizzjizz一区二区| 亚洲精品亚洲人成人网在线播放| 欧美亚洲动漫制服丝袜| 日韩av高清在线观看| 国产亚洲精品精华液| 一本大道综合伊人精品热热| 午夜视频在线观看一区二区| 精品国产网站在线观看| 91免费在线视频观看| 日韩和欧美一区二区| 国产欧美日韩在线观看| 欧美在线999| 国产成人丝袜美腿| 亚洲第一激情av| 国产精品视频一二| 9191成人精品久久| 99久久er热在这里只有精品66| 日韩国产精品久久久| 中文在线一区二区| 日韩一级片在线观看| caoporn国产一区二区| 免费观看日韩av| 亚洲乱码中文字幕| 国产亚洲成aⅴ人片在线观看| 欧美伊人精品成人久久综合97| 国产精品一区在线观看乱码| 调教+趴+乳夹+国产+精品| 亚洲欧美自拍偷拍色图| 99久久精品国产一区二区三区 | 国产福利91精品一区| 亚洲国产一区二区a毛片| 欧美国产在线观看| 欧美成人艳星乳罩| 欧美久久久久中文字幕| 91免费视频观看| 国产不卡视频在线播放| 欧美日韩一级大片网址| 国产一区二区在线电影| 强制捆绑调教一区二区| 亚洲午夜免费视频| 国产精品国产精品国产专区不蜜| 欧美顶级少妇做爰| 色香蕉成人二区免费| 99热这里都是精品| 成人免费观看视频| 懂色av一区二区三区蜜臀| 久久99精品网久久| 久久精品国产亚洲5555| 日韩精品三区四区| 亚洲chinese男男1069| 亚洲精品国产一区二区精华液 | 亚洲另类春色国产| 国产精品久久久久久妇女6080 | 99久久99久久综合| 成人永久免费视频| 日韩欧美一二三区| 欧美电视剧免费观看| 制服丝袜中文字幕亚洲| 欧美一区二区性放荡片| 91精品国产综合久久久蜜臀粉嫩| 欧美日韩免费在线视频| 欧美人伦禁忌dvd放荡欲情| 欧美最猛黑人xxxxx猛交| 欧美三级资源在线| 777亚洲妇女| 日韩欧美中文字幕精品| 欧美草草影院在线视频| 精品99999| 国产无人区一区二区三区| 国产农村妇女毛片精品久久麻豆 | 国产高清精品网站| 成人国产精品免费观看视频| 成人黄色国产精品网站大全在线免费观看 | 欧美日韩中文字幕精品| 欧美日韩大陆在线| 日韩一区二区电影在线| 久久这里只有精品视频网| 国产亚洲va综合人人澡精品| 国产精品久99| 亚洲国产精品一区二区www在线| 日日骚欧美日韩| 国产主播一区二区| 99热精品国产| 欧美女孩性生活视频| 欧美草草影院在线视频| 国产精品免费aⅴ片在线观看| 中文字幕亚洲欧美在线不卡| 亚洲一区成人在线| 韩国女主播一区二区三区| 成人av免费网站| 欧美日韩一区二区三区视频| 日韩一级二级三级| 国产精品不卡在线| 日韩不卡手机在线v区| 成人小视频在线观看| 欧美日韩中文字幕一区| 国产视频一区不卡| 亚洲一本大道在线| 国产精品18久久久久久久久| 欧美中文字幕一区二区三区| 精品粉嫩超白一线天av| 亚洲黄色在线视频| 国产一区二区三区国产| 在线观看国产一区二区| 国产亚洲短视频| 日韩精品欧美成人高清一区二区| 国产.欧美.日韩| 日韩一区二区三区视频在线 | 久久久精品蜜桃| 一区二区三区精品| 国产一区二区三区在线看麻豆| 91福利在线播放| 久久久精品免费观看| 日韩专区中文字幕一区二区| www.av精品| 久久婷婷色综合| 日韩中文字幕不卡| 91毛片在线观看| 国产日产精品1区| 五月婷婷另类国产| 色综合天天天天做夜夜夜夜做| 丝袜脚交一区二区| 不卡的av中国片| 久久综合久久99| 奇米精品一区二区三区四区| 一本到一区二区三区| 国产日韩高清在线| 精品一区二区免费看| 欧美日韩你懂得| 亚洲一区二区高清| 91亚洲永久精品| 中文字幕亚洲成人| 国产成人免费视频网站高清观看视频| 日韩一级大片在线观看| 亚洲电影一级黄| 精品视频在线免费观看| 玉足女爽爽91| 在线免费不卡电影| 亚洲欧美精品午睡沙发| 成人av网在线| 国产精品白丝在线| 成人激情黄色小说| 国产欧美日韩激情| 粉嫩aⅴ一区二区三区四区| 26uuu另类欧美亚洲曰本| 久久99精品视频| 精品乱人伦一区二区三区| 蜜桃精品在线观看| 日韩欧美国产麻豆| 美脚の诱脚舐め脚责91| 日韩久久久久久| 韩国v欧美v亚洲v日本v| 久久夜色精品一区| 国产91露脸合集magnet| 国产日韩欧美制服另类| 成人综合在线观看| 成人欧美一区二区三区| 日本乱码高清不卡字幕| 一区二区在线免费| 亚洲精品视频一区| 91国产丝袜在线播放| 亚洲国产日韩a在线播放| 欧美日韩一级视频| 久久国产生活片100| 国产午夜亚洲精品不卡| 成人动漫一区二区| 一区二区三区91| 欧美精品在线一区二区| 久久精品av麻豆的观看方式| 精品国产网站在线观看| 国产成人激情av| 亚洲码国产岛国毛片在线| 在线免费亚洲电影| 免费欧美日韩国产三级电影| 2021国产精品久久精品| 成人免费视频播放| 一区二区免费在线| 日韩一区二区精品| 成人白浆超碰人人人人| 亚洲综合男人的天堂| 欧美mv日韩mv国产网站app| 成人综合激情网| 亚洲va天堂va国产va久| 久久久99精品免费观看不卡| 99热精品一区二区|