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

时间:2012-05-03 12:33:04

标签: c# visual-studio directory screenshot

奥基。这就是我想要做的事情:

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

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

Capture screenshot of active window?

但是,如果我想截取未打开位置的屏幕截图会怎样?

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

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

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

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

有人能解释一下这个问题吗?谢谢你的时间!

4 个答案:

答案 0 :(得分:2)

取决于你真正想做什么,如果你的意图是在排序操作之前和之后检查“文件夹”和“子文件夹”的内容,我建议你使用命令提示符来生成内容列表在文本文件中。您可以像这样使用dir命令:

DIR /S /B "Path\To\Folder" > "Path\to\text\File.txt"

答案 1 :(得分:1)

您无法拍摄未在屏幕上绘制的内容的快照。您需要打开文件夹,拍摄快照并关闭文件夹。

答案 2 :(得分:1)

首先想一想截图的目的。您可以在排序之前和之后记录文件夹内对象的顺序。然后,您可以使用logdata生成文本或图形输出,显示像图像这样的文件夹,其内容按预先排序。

如果你截取屏幕截图,你如何处理不适合文件夹内的对象?使用上述解决方案,您甚至可以获得在打开的文件夹中看不到的文件的信息。

否则,将无法获得屏幕上没有的任何内容的真实屏幕截图。打开文件夹将是最简单也是唯一的方法。

答案 3 :(得分:1)

您可以将文件夹窗口放在他/她的屏幕范围之外。然后截取该窗口区域的截图。

您可以使用以下代码确定屏幕宽度和高度以及位置(如果您将第二个屏幕放置在主屏幕的左侧,则屏幕的起始位置为负):

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);

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