В настоящее время я пытаюсь сделать трекер работы в C #, и я хочу иметь его там, где он временно создает файл, который сохраняет снимки экрана с действиями на экране, затем преобразует эти снимки экрана в видео, а затем удаляет всескриншоты.Пока все работает, кроме последней части, где я удаляю скриншоты, потому что там написано, что они используются программой.Я не уверен, где ошибка, поэтому я просто дам весь код, который у меня есть:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Imaging;
using Accord.Video.FFMPEG;
using System.IO;
namespace WorkTracker
{
public partial class Form1 : Form
{
//Vars:
string outputPath = "";
string path = "";
int fileCount = 1;
List<string> inputImageSequence = new List<string>();
//Functions:
void takeScreenshot()
{
Rectangle bounds = Screen.FromControl(this).Bounds;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}
string name = path + "//screenshot-" + fileCount + ".jpeg";
bitmap.Save(name, ImageFormat.Jpeg);
inputImageSequence.Add(name);
fileCount++;
}
}
public static void DeletePath(string target_dir)
{
string[] files = Directory.GetFiles(target_dir);
string[] dirs = Directory.GetDirectories(target_dir);
foreach (string file in files)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
foreach (string dir in dirs)
{
DeletePath(dir);
}
Directory.Delete(target_dir, false);
}
public Form1()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
tmrTrack.Start();
}
private void tmrTrack_Tick(object sender, EventArgs e)
{
takeScreenshot();
}
private void btnStop_Click(object sender, EventArgs e)
{
tmrTrack.Stop();
int width = 1920;
int height = 1080;
var framRate = 5;
using (var vFWriter = new VideoFileWriter())
{
//Create new video file:
vFWriter.Open(outputPath+"//video.avi", width, height, framRate, VideoCodec.Raw);
foreach (var imageLocation in inputImageSequence)
{
Bitmap imageFrame = System.Drawing.Image.FromFile(imageLocation) as Bitmap;
vFWriter.WriteVideoFrame(imageFrame);
break;
}
vFWriter.Close();
}
DeletePath(path);
}
private void Form1_Load(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
folderBrowser.Description = "Select an Output Folder";
if (folderBrowser.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
outputPath = @folderBrowser.SelectedPath;
}
else
{
MessageBox.Show("Please select an output folder.", "Error");
Form1_Load(sender, e);
}
string pathName = "C://Documents//tempScreenCaps";
System.IO.Directory.CreateDirectory(pathName);
path = pathName;
}
private void btnPause_Click(object sender, EventArgs e)
{
tmrTrack.Stop();
}
}
}
Любая помощь приветствуется.