最近工作中让我遇到一个比较头疼的问题, 由于现场程序的一个基础参数总是被人修改导致生产环境出现问题,但是一问现场人员就没有一个人承认都说程序有问题搞得我也很尴尬,所以本人自己开发“步骤记录器工具”。
步骤记录器(Steps Recorder)是一种内置于Windows系统的工具,主要用于自动记录用户在计算机上进行故障排除的步骤。通过该工具,用户无需详细说明每一步的具体操作,所有的操作将被自动记录,用户可以将记录文件发送给专业支持人员,以帮助他们诊断和解决计算机问题。需要注意的是,步骤记录器不会捕获用户键入的文本,需要手动开始和停止记录步骤。
起初本人第一反应就是想到了Windows自带的“步骤记录器”工具,但是Windows步骤记录器(PSR)最大可以一次性录制100张图片。超过100张后,会自动覆盖前面的图片,依次循环,所以想抓到一个人的“犯罪”证据100张图片是远远不够的。
步记录器的原理:根据当前电脑用户每次点击鼠标会自动截图保存到本地。
使用C#开发
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
MouseHook.Start();
MouseHook.MouseAction += new EventHandler(Event);
}
private void button1_Click(object sender, EventArgs e)
{
Task.Run(() => {
// 调用截图方法
CaptureScreen();
});
}
private void CaptureScreen()
{
try
{
// 创建一个与屏幕大小相同的位图
using (Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb))
{
// 创建一个图形对象从位图
using (Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot))
{
// 截取屏幕区域的图片
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0,
0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
// 保存截图到文件
string filename = $"Screenshot_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.png";
bmpScreenshot.Save(filename, ImageFormat.Png);
//MessageBox.Show($"截图已保存至: {filename}", "截图成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
catch (Exception ex)
{
// 出错处理
//MessageBox.Show(ex.Message, "截图错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
MouseHook.Stop();
base.OnFormClosing(e);
}
private void Event(object sender, EventArgs e)
{
Task.Run(() => {
// 调用截图方法
CaptureScreen();
});
}
}
}
本“步骤记录器增强版”的存储空间取决于电脑硬盘的大小,亲测比WIndows自带的好用。