我知道可以捕获另一个应用程序后面的应用程序的屏幕,但我似乎无法找到捕获最小化应用程序屏幕的任何内容。
有人碰巧知道这是否可行?我不想进入最快化和最小化应用程序之类的事情。
答案 0 :(得分:4)
正如@ziplin所说的更新版Windows可能(通过DWM apis)。从c#开始,您可以使用Windows API codepack访问新的apis
答案 1 :(得分:1)
我不相信,只是因为我注意到如果窗口最小化,尝试预览最小化窗口的程序似乎会画空白。虽然,一些新版本的windows(vista和7,我相信)做了这件事,但我不确定复制是多么容易(根本)
答案 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;