截取未打开的文件夹窗口的屏幕截图
本文关键字:文件夹 屏幕截图 窗口 截取 | 更新日期: 2023-09-27 18:33:07
Okey.以下是我想做的:
我有一个Windows应用程序,可以对用户指定的文件夹进行排序。我想在排序之前截取此文件夹的屏幕截图,然后在程序完成对文件夹的排序后再次截取屏幕截图。
我知道如何使用以下链接截取活动窗口的屏幕截图:
捕获活动窗口的屏幕截图?
但是,如果我想截取未打开位置的屏幕截图,会发生什么情况?
Meening,我想截取一个根本没有打开的文件夹的屏幕截图。甚至可能吗?
如果是,那么我将如何实现这一目标?
我想一种方法是让程序打开文件夹 ->截屏 ->关闭它 ->排序文件夹 ->打开文件夹 ->截取新屏幕截图 -> 显示在屏幕上
不过,这不是一个非常优雅的解决方案。
谁能阐明这个问题?谢谢你的时间!
取决于你实际想要做什么,如果你的目的是在排序操作前后检查"文件夹"和"子文件夹"的内容,我建议你使用命令提示符在文本文件中生成内容列表。 您可以使用 dir 命令,如下所示:
DIR /S /B "Path'To'Folder" > "Path'to'text'File.txt"
首先考虑屏幕截图的目的。您也许能够在对对象进行排序之前和之后记录文件夹中对象的顺序。然后,您可以使用logdata生成文本或图形输出,显示类似图像的文件夹,内容按预先排序顺序排列。
如果您截取屏幕截图,如何处理不适合文件夹的对象?使用上述解决方案,您甚至可以获得打开文件夹中不可见的文件的信息。
否则,将无法获得屏幕上未显示的任何内容的真实屏幕截图。打开文件夹将是最简单且唯一的方法。
您无法拍摄屏幕上未绘制的内容的快照。您需要打开文件夹,拍摄快照并关闭文件夹。
您可以将文件夹窗口放置在他/她的屏幕范围之外。然后截取该窗口区域的屏幕截图。
您可以使用以下代码确定屏幕宽度、高度和位置(如果将第二个屏幕放置在主屏幕的左侧,则屏幕的起始位置为负数):
System.Windows.SystemParameters.VirtualScreenWidth; //Total width of screen
System.Windows.SystemParameters.VirtualScreenHeight; //Total height of screen
System.Windows.SystemParameters.VirtualScreenLeft; //Start x location of screen
System.Windows.SystemParameters.VirtualScreenTop; //Start y location of screen
通过将文件夹窗口放置在该区域之外,然后拍摄该文件夹的屏幕截图应该可以解决问题。(不确定未测试)
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(folderWidth, folderHeight);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
g.CopyFromScreen(folderX, folderY, 0, 0, folderSize);
bitmap.Save(aRandomFileStream, System.Drawing.Imaging.ImageFormat.Jpeg);
按原样提供的代码...如果它有效,则没有警告。