(转)C#实现录屏功能

  转帖,C#实现录屏功能

  参考了一些方法,实现了录屏功能。(我的机器必须安装WMEncoder_cn.exe。稍微改写了下提供的代码。另改写成VB.NET后有异常,原因待查。。。)

  环境:windows xp

  用到的dll为:Interop.WMEncoderLib.dll,下载地址:http://download.csdn.net/detail/yysyangyangyangshan/4056611。如果有条件再安装上WMEncoder_cn.exe,下载地址:http://download.csdn.net/detail/yysyangyangyangshan/4056628。主要录屏方法如下:

        WMEncoder Encoder = null;

    //开始录制
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                Encoder = new WMEncoder();

                IWMEncSourceGroup SrcGrp;

                IWMEncSourceGroupCollection SrcGrpColl;

                SrcGrpColl = Encoder.SourceGroupCollection;

                SrcGrp = SrcGrpColl.Add("SG_1");

                IWMEncSource SrcVid = null;

                IWMEncSource SrcAud = null;

                SrcVid = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);

                SrcAud = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO);

                SrcAud.SetInput("Default_Audio_Device", "Device", "");

                SrcVid.SetInput("ScreenCapture1", "ScreenCap", "");

                IWMEncProfileCollection ProColl;

                IWMEncProfile Pro;

                int i;

                long lLength;

                ProColl = Encoder.ProfileCollection;

                lLength = ProColl.Count;

                for (i = 0; i < lLength - 1; i++)
                {
                    Pro = ProColl.Item(i);

                    if (Pro.Name == "屏幕视频/音频 - 高(CBR)")
                    {
                        SrcGrp.set_Profile(Pro);

                        break;
                    }
                }
                IWMEncDisplayInfo Descr;

                Descr = Encoder.DisplayInfo;

                Descr.Author = "";

                Descr.Copyright = "";

                Descr.Description = "";

                Descr.Rating = "";

                Descr.Title = "";

                IWMEncAttributes Attr;

                Attr = Encoder.Attributes;

                IWMEncFile File;

                File = Encoder.File;

                if (label1.Text != string.Empty)
                {
                    File.LocalFileName = @"C:\1.WMA"; //保存路径
                }
                else
                {
                    MessageBox.Show("请先选择路径!");
                    return;
                }

                Encoder.Start();
            }
            catch (Exception ex)
            {
                
            } 

        }

    //停止录制

        private void button3_Click(object sender, EventArgs e)
        {
            Encoder.Stop();
        }

录屏工程详见:http://download.csdn.net/detail/yysyangyangyangshan/4056621,编程环境VS2008。

 

posted @ 2012-07-30 15:14  逆转反击  阅读(9243)  评论(3编辑  收藏  举报