C#每分钟截取屏幕并保存为文件

下面的这段代码实现一个功能:定时截取屏幕并保存为文件。

public Form1()
        {
            InitializeComponent();
            timer1.Tick += delegate
            {
                Graphics grpScreen = Graphics.FromHwnd(IntPtr.Zero);
                Bitmap bm = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, grpScreen);
                Graphics grpBitmap = Graphics.FromImage(bm);
                IntPtr hdcScreen = grpScreen.GetHdc();
                IntPtr hdcBitmap = grpBitmap.GetHdc();
                BitBlt(hdcBitmap, 0, 0, bm.Width, bm.Height, hdcScreen, 0, 0, 0x00CC0020);
                grpBitmap.ReleaseHdc(hdcBitmap);
                grpScreen.ReleaseHdc(hdcScreen);
                grpBitmap.Dispose();
                grpScreen.Dispose();
                string filename = DateTime.Now.GetDateTimeFormats('s')[0].Replace(":", "").Replace("T", "").Replace("-", "");
                bm.Save(@"R:\" + filename + ".bmp");
            };
        }

        [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
        private static extern bool BitBlt(
IntPtr hdcDest, // 目标 DC的句柄
int nXDest,
int nYDest,
int nWidth,
int nHeight,
IntPtr hdcSrc, // 源DC的句柄
int nXSrc,
int nYSrc,
System.Int32 dwRop // 光栅的处理数值
);

这个功能执行一段时间之后,会在R盘生成一大堆以时间命名的图片文件。

扫码关注我的公众号