1

好的。这是我想要做的:

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

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

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

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

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

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

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

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

任何人都可以对这个问题有所了解吗?感谢您的时间!

4

4 回答 4

2

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

DIR /S /B "Path\To\Folder" > "Path\to\text\File.txt"
于 2012-05-03T12:50:55.000 回答
1

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

于 2012-05-03T12:36:56.960 回答
1

首先想到截图的目的。您可能能够在对它们进行排序之前和之后记录文件夹内对象的顺序。然后,您可以使用您的日志数据来生成文本或图形输出,以显示一个像图像一样的文件夹,其中的内容按预先排序的顺序排列。

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

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

于 2012-05-03T12:48:22.860 回答
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);

按原样提供的代码...如果有效,则无需保证。

于 2012-05-03T13:22:13.117 回答