C# 每5分钟拍摄一次活动窗口的屏幕截图,并将其保存在文件中

C# 每5分钟拍摄一次活动窗口的屏幕截图,并将其保存在文件中,c#,C#,已经搜索过了,但没有得到任何地方的帮助! 使用此功能捕获屏幕: private static Image CaptureScreen() { Rectangle screenSize = Screen.PrimaryScreen.Bounds; var target = new Bitmap(screenSize.Width, screenSize.Height); using (Graphics g = Graphics.FromImag

已经搜索过了,但没有得到任何地方的帮助!

使用此功能捕获屏幕:

private static Image CaptureScreen()
    {
        Rectangle screenSize = Screen.PrimaryScreen.Bounds;
        var target = new Bitmap(screenSize.Width, screenSize.Height);
        using (Graphics g = Graphics.FromImage(target))
        {
            g.CopyFromScreen(0, 0, 0, 0, new Size(screenSize.Width, screenSize.Height));
        }
        return target;
    }
保存到文件:

var currentImage = CaptureScreen();
currentImage.Save(Path.Combine("Your directory path", "Your file name"));

因此,您的问题在于如何每5分钟运行一次任务。使用计时器:

var timer = new System.Timers.Timer(TimeSpan.FromMinutes(5).TotalMilliseconds);

timer.Elapsed += Timer_Elapsed;
timer.Start();

private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
    // call the function that takes the screenshot
}

是否每次保存图像时都要创建一个新的文件名,而不是:

image.Save(@"D:\documents\FYP\snippetsource.jpg", ImageFormat.Jpeg);
做一些类似于:

image.Save(string.Format(@"D:\documents\FYP\snippetsource_{0}.jpg", Guid.NewGuid()), ImageFormat.Jpeg);
您可以使用对应用程序更有意义的任何唯一字符串更改
Guid.NewCuid()


希望有帮助

拍摄屏幕截图的可能复制已完成…但问题是我希望每5分钟保存一次图像…使用此方法var image=screenscapture.CaptureActiveWindow();image.Save(@“D:\documents\FYP\snippetsource.jpg”,ImageFormat.Jpeg);。。。。。。。。。但它替换了旧图像我想保存所有图像感谢它的帮助…….var currentImage=ScreenCapture.CaptureScreen()//currentImage.Save(Path.Combine(@“D:\documents\FYP”、“abc.jpg”);currentImage.Save(string.Format(@“dll\snippetsource_{0}.jpg”,Guid.NewGuid()),ImageFormat.Jpeg);。。。。。。。。。。。。当我调用Time_expased时,它不起作用…………我这样调用它:private void timer1_Tick(object sender,EventArgs e){var timer=new System.Timers.timer(TimeSpan.FromSeconds(2.total毫秒);timer.expased+=timer_expased;}尝试将创建的计时器实例存储在类级私有memeber中,而不是本地方法变量.timer.appeased+=timer\u appeased;。。。。。。。。。它不调用Timer_appeased(objectsender,ElapsedEventArgs e)……我这样调用它:var Timer=new System.Timers.Timer(TimeSpan.FromSeconds(2.total毫秒));timer.appeated+=timer\u appeated@muneeb抱歉,您需要使用
timer.Start()感谢它的完成…….var aTimer=新系统.Timers.Timer(1000);aTimer.EASED+=新的ElapsedEventHandler(计时器已用);a时间间隔=1000;aTimer.Enabled=true;。。。。。。。。。这段代码解决了我的问题……真的很感谢你:)@muneeb