private void frmMain_Load(object sender, EventArgs e)
        {
            // 开始注册热键
            // 开始录制热键
            RegisterHotKey(this.Handle, 666, 0, Keys.F1);
            // 结束录制热键
            RegisterHotKey(this.Handle, 888, 0, Keys.F2);

Start:

            try
            {
                // 使用 WMVEncoder 编码
                recorder = new Recordor(new WMVEncoder());
            }
            catch
            {
                // 初始化COM组件信息
                InitCOM();

                goto Start;
            }

            // 设置标题 使用的是资源文件
            this.Text = Properties.Resources.SoftName;

            // 设置只能存为WMV文件
            saveFile.Filter = "WMV文件(*.wmv)|*.wmv";

            /// Rewrite by 乔伟 at Rewrite Date:2008-11-25
            /// START1:

            /*
             * // 初始化压缩选项
             * InitProfile();
             */
            // 原来是在这里直接调用InitProfile()进行压缩格式的初始化,但导致双击运行后显示界面时过于缓慢,故将此提入一个新线程去执行
            Thread initProfileThread = new Thread(InitProfileThread);

            initProfileThread.IsBackground = true;
            initProfileThread.Start();

            /// END1
            // 初始化录制的裁减区域
            InitClipArea();

            // 设置控制按钮初始状态
            btnPause.Enabled = false;
            btnStop.Enabled  = false;
            btnPlay.Enabled  = false;

            // findWindow控件初始的时候是隐藏的
            findWindow.Visible = false;

            // 拖盘图标处理
            notifyIcon.Visible = true;
        }
        private bool  BeginRecord()
        {
            recorder = new Recordor(new WMVEncoder());

            // 假如已经选择文件保存路径
            if (saveFile.FilePath != string.Empty)
            {
                try
                {
                    // 假如当前不处于运行状态
                    if (currentState != RecordState.Run)
                    {
                        // 假如压缩方式已经选定
                        if (cbProfiles.Text != string.Empty)
                        {
                            // 初始录制区域 此处设为全屏,本例子不进行局部录制的处理
                            ScreenArea area;
                            area.X      = int.Parse(tbOriPointX.Text);  // 左上角坐标X值
                            area.Y      = int.Parse(tbOriPointY.Text);  // 左上角坐标Y值
                            area.Weight = int.Parse(tbAreaWidth.Text);  // 宽度
                            area.Height = int.Parse(tbAreaHeight.Text); // 高度

                            // 初始媒体信息
                            MediaInfo mediaInfo = new MediaInfo();
                            mediaInfo.SavePath    = saveFile.FilePath;
                            mediaInfo.ProfileName = cbProfiles.Text;
                            if (rbBoth.Checked)
                            {
                                mediaInfo.AudioVedio = AudioVedioType.Both;
                            }
                            if (rbOnlyAudio.Checked)
                            {
                                mediaInfo.AudioVedio = AudioVedioType.AudioOnly;
                            }
                            if (rbOnlyVideo.Checked)
                            {
                                mediaInfo.AudioVedio = AudioVedioType.VedioOnly;
                            }

                            try
                            {
                                recorder.Start(mediaInfo, area);

                                // 将当前状态设为录制中。
                                this.currentState = RecordState.Run;

                                // 设置按钮状态
                                btnStart.Enabled = false;
                                btnPause.Enabled = true;
                                btnStop.Enabled  = true;
                                btnPlay.Enabled  = false;
                            }
                            catch (Exception ce)
                            {
                                this.currentState = RecordState.Stop;

                                MessageBox.Show(ce.Message);

                                recorder.Stop();

                                return(false);
                            }
                        }
                        else
                        {
                            MessageBox.Show("请选择压缩方式");

                            return(false);
                        }
                    }
                    else
                    {
                        MessageBox.Show("正在录制中");

                        return(false);
                    }
                }
                catch
                {
                    return(false);
                }
            }
            else
            {
                MessageBox.Show("请指定保存的位置");

                return(false);
            }

            // 启动一个线程 管理拖盘图标的状态 闪动
            if (iconRunState == null)
            {
                iconRunState = new Thread(IconRunStateThread);
                // 设置为后台线程,保证,程序退出时,即使出错了,也会退出。
                iconRunState.IsBackground = true;
                iconRunState.Start();
            }
            else
            {
                iconRunState.Resume();
            }

            return(true);
        }