最近工作比较清闲,所以开始捣鼓代码了,在使用电脑的时候会经常需要记录一个东西,但是这东西又是一闪而过,所以就想有一个屏幕录像器,用现成的又都要注册什么的,所以就干脆自己写一个吧,思路很简单:每秒钟截一次屏,保存下来,然后播放器当然就是一秒钟播放一次图片了。自己认为牛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/。程序员不容易,希望大家多多支持,有钱的捧个人场,没钱的捧个人场,点点链接,收藏店铺什么的。