.net - 如何在 C# 中将屏幕截图与剪贴板上的副本分开

标签 .net c#-3.0 clipboard screenshot

我这里遇到了一些问题。我想使用我构建的应用程序将屏幕截图保存到桌面。为此,我需要识别剪贴板上的哪些图像来自屏幕截图以及哪些图像是复制的。但我不知道该怎么做,我一直在寻找答案,但没有找到。

该应用程序的想法是它始终在后台处于事件状态,并且每当我按下 PrintScreen 按钮时,它都会直接将图像保存在我的桌面上。

最佳答案

为什么不让应用程序截屏并为您保存呢?

这可能是您确定要保存的图像是您想要的屏幕截图的唯一方法。

您可以像这样创建 bmp 屏幕截图:

Size s = Screen.PrimaryScreen.Bounds.Size;
Bitmap bmp = new Bitmap(s.Width, s.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, s);

然后像这样保存bmp:

bmp.Save("PATHANDFILENAME");

更新

根据这些附加信息,您可能会考虑保存屏幕截图和使用全局键盘 Hook (由 Tom 提供)的组合。使用钩子(Hook)应该可以捕获按下的打印屏幕,然后捕获并保存当前屏幕。此外,您也许可以取消按下的打印屏幕并阻止其将屏幕复制到剪贴板。

关于.net - 如何在 C# 中将屏幕截图与剪贴板上的副本分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4367421/

相关文章:

.net - 我可以从 HttpModule 实例中放弃 InProc ASP.NET session 吗

c# - 无法使用 SendKeys 或 SendMessage 以编程方式粘贴非文本对象

c# - 不能往返 html 格式到剪贴板

c# - 了解如何本地化资源

c# - 条件属性如何在幕后工作

c# - 确定类型是否为匿名类型

c# - 复制剪贴板中的文本

.net - .net 4.5 和 Entity Framework 中的外部应用

c# - 当一个类没有实现必需的属性时,是否会抛出标准的 .NET 异常?

opencv - 用于对象检测错误的OpenCvSharp HaarClassifier级联