最近工作比较清闲,所以开始捣鼓代码了,在使用电脑的时候会经常需要记录一个东西,但是这东西又是一闪而过,所以就想有一个屏幕录像器,用现成的又都要注册什么的,所以就干脆自己写一个吧,思路很简单:每秒钟截一次屏,保存下来,然后播放器当然就是一秒钟播放一次图片了。自己认为牛X一点的功能就是支持全局热键,废话不多说上主要代码:

        public bool copyScreen(string path)
        {
            //引用命名空间using System.Drawing.Imaging;
            Rectangle rect = new Rectangle();
            rect = Screen.GetWorkingArea(this);
            Size mysize = new Size(rect.Width, rect.Height);
            Bitmap bitmap = new Bitmap(rect.Width, rect.Height);
            Graphics g = Graphics.FromImage(bitmap);
            g.CopyFromScreen(0, 0, 0, 0, mysize);
            string ImageName = path + @"\" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
            try
            {
                //如果程序开启后,文件夹被删除,则重新建立
                if (!File.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                bitmap.Save(ImageName, ImageFormat.Jpeg);
            }
            catch (Exception ee)
            {                                                       
                MessageBox.Show("保存出现异常!检查是否空间不足!");
                return false;
            }
            bitmap.Dispose();
            g.Dispose();
            GC.Collect();
            return true;
        }

还有一个主要的地方就是这个程序要隐身,我是这么做的:

 public CopyScreen()
        {
            InitializeComponent();
            this.WindowState = FormWindowState.Minimized;
            this.ShowInTaskbar = false;
            SetVisibleCore(false);
        }

        protected override void SetVisibleCore(bool value)
        {
            base.SetVisibleCore(value);
        }

在任务管理器上还是能看见的这也方便调试。因为我要保证程序的唯一性,这就是下一步要说的。程序只能运行一个实例

     static void Main()
        {
            bool isAppRuning = false;
            System.Threading.Mutex mutex=new System.Threading.Mutex(true,System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRuning);
            if (isAppRuning) {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new CopyScreen());
            }
            else
            {
                Environment.Exit(1);
            }
        }

还有一个地方就是全局热键,大家自己搞一下吧。

程序的使用方法:启动后,程序没有界面,按shift+z开始录像,按shift+x停止录像,按ctrl+shift+a是截屏,shift+e程序退出,如果没产生文件程序会自动删除建立的文件夹。产生的文件夹在程序的根部录下。建议可以开机启动,很方便。

这就是播放器的界面,打开按钮打开刚才录像产生的文件夹,点击开始,开始播放,点击播放区域可以暂停,按开始键继续。

这基本上就是这两个小软件的全部,只是享受自己制作的快感,希望大牛勿喷。

想获得编译好的软件以及源码在这里:http://item.taobao.com/item.htm?spm=0.0.0.0.QTHs8l&id=41209799164            ps.接受议价。

也不是说一定要收钱,但是这也是自己的劳动成果,而且主要代码已分享,希望大家不要黑我。有不懂得可以留评论。有可以优化的地方也希望多提建议。

我的小店刚开张:http://shop113034356.taobao.com/。程序员不容易,希望大家多多支持,有钱的捧个人场,没钱的捧个人场,点点链接,收藏店铺什么的。

posted on 2014-09-18 12:31  itl---小雨  阅读(1704)  评论(2编辑  收藏  举报