我在这里遇到了一些问题。我想使用我构建的应用程序将屏幕截图保存到我的桌面。为此,我需要识别剪贴板上的哪些图像来自屏幕截图以及哪些图像被复制。但我不知道该怎么做,我已经找到了答案,但没有找到答案。
应用程序的想法是它在后台始终处于活动状态,每当我按下PrintScreen按钮时,它就会直接将图像保存在我的桌面上。
答案 0 :(得分:4)
为什么不让应用程序截取屏幕并为您保存?
这可能是您确定要保存的图像是您想要的屏幕截图的唯一方法。
你可以像这样创建一个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");
<强>更新强>
根据这些附加信息,您可能会考虑保存屏幕截图和使用全局键盘挂钩(Tom提供的)的组合。使用挂钩应该可以捕获正在按下的打印屏幕,然后捕获并保存当前屏幕。您也可以取消正在按下的打印屏幕,并防止它将屏幕复制到剪贴板。
答案 1 :(得分:1)
如果你想区分真实截图和虚假截图,请尝试在图片中嵌入一些看不见的小变化,但你可以从你的代码中检测出来,例如客户端上的位置像素(2,2)表格的区域可能会略微改变RGB值(+ 3,+ 2,+ 1) - 这是看不见的。
答案 2 :(得分:0)
嗯有趣。您可以将此代码组合起来侦听剪贴板更改:
http://codeguru.earthweb.com/columns/dotnettips/article.php/c7315/
使用一些额外的代码来检查keystate之前。
或者,使用global keyboard hook,您可以听取Ctrl + C或PrtScn,然后立即检查剪贴板。当然,正如评论所暗示的那样,这不是万无一失的,但这是一个开始。