是否可以截取最小化的应用程序

时间:2010-07-14 22:40:59

标签: c#

我知道可以捕获另一个应用程序后面的应用程序的屏幕,但我似乎无法找到捕获最小化应用程序屏幕的任何内容。

有人碰巧知道这是否可行?我不想进入最快化和最小化应用程序之类的事情。

7 个答案:

答案 0 :(得分:4)

正如@ziplin所说的更新版Windows可能(通过DWM apis)。从c#开始,您可以使用Windows API codepack访问新的apis

答案 1 :(得分:1)

我不相信,只是因为我注意到如果窗口最小化,尝试预览最小化窗口的程序似乎会画空白。虽然,一些新版本的windows(vista和7,我相信)做了这件事,但我不确定复制是多么容易(根本)

http://www.stardock.com/products/objectdock/

答案 2 :(得分:1)

我从未尝试过。 This code声称看起来合理,但有关于最小化窗口的警告。如果不出意外的话,它就是一个开始的地方。

答案 3 :(得分:1)

你不能没有恢复窗户。当窗口最小化时,应用程序不处于呈现应用程序捕获的UI的状态。

答案 4 :(得分:1)

如果有人仍然想要一个可行的解决方案我试过这个并且对我有用。它为最小化的窗口提供了一个技巧(因为窗口不会刷新它们,在任务栏上,标志性图片显示窗口的最后一个图像在最小化之前)。而Ziplin上面提到Objectdock可以捕获最小化的窗口,实际上它和Windows一样,它使用最小化之前捕获的最后一个图像。

所以这是链接:http://www.codeproject.com/Articles/20651/Capturing-Minimized-Window-A-Kid-s-Trick

答案 5 :(得分:0)

作为最后的手段:为什么不在最小化之前捕获窗口?

答案 6 :(得分:0)

我知道为时已晚,也许对别人有帮助。

我想到了另一种方法,不是最小化,而是在捕获屏幕之前将表单移到屏幕坐标之外,然后重新生成它。 下面是我的代码示例:

//Move the form beyond the screen
this.StartPosition = FormStartPosition.Manual;
      this.Location = new Point(Screen.PrimaryScreen.Bounds.Width + 10, Screen.PrimaryScreen.Bounds.Height + 10);

// Screenshot code here...

//Respawn the form to origin location
this.Location = currentPosition;