截取未打开的文件夹窗口的屏幕截图



Okey.以下是我想做的:

我有一个Windows应用程序,可以对用户指定的文件夹进行排序。我想在排序之前截取此文件夹的屏幕截图,然后在程序完成对文件夹的排序后再次截取屏幕截图。

我知道如何使用以下链接截取活动窗口的屏幕截图:

捕获活动窗口的屏幕截图?

但是,如果我想截取未打开位置的屏幕截图,会发生什么情况?

Meening,我想截取一个根本没有打开的文件夹的屏幕截图。甚至可能吗?

如果是,那么我将如何实现这一目标?

我想一种方法是让程序打开文件夹 ->截屏 ->关闭它 ->排序文件夹 ->打开文件夹 ->截取新屏幕截图 -> 显示在屏幕上

不过,这不是一个非常优雅的解决方案。

谁能阐明这个问题?谢谢你的时间!

取决于你实际想要做什么,如果你的目的是在排序操作前后检查"文件夹"和"子文件夹"的内容,我建议你使用命令提示符在文本文件中生成内容列表。 您可以使用 dir 命令,如下所示:

DIR /S /B "PathToFolder" > "PathtotextFile.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);

按原样提供的代码...如果它有效,则没有警告。

最新更新