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); }