【发布时间】:2016-10-22 06:17:27
【问题描述】:
我有一些代码可以捕获 Windows 桌面应用程序内容并保存到 .NET 中的位图对象。它使用 User32.dll 和 Gdi32.dll (BitBlt) 并且工作得很好。但是,当我为代码提供一个包含 Windows 应用商店应用程序的窗口的句柄时,该代码会生成全黑位图。我不确定这是安全功能还是什么。我不能使用 ScreenCapture api,因为窗口的内容在调整大小后几乎总是比屏幕高/大。对于 Windows 应用商店应用程序,有没有人幸运地捕获窗口内容,即使它们比屏幕还大?
编辑:作为一个注释,我正在尝试捕获不同程序的窗口,而不是我自己的程序。我的程序可以假定为 .NET 4.6.1 / C# 中的 Windows 控制台应用程序
另外,我知道这必须在 Windows API 中以某种方式实现,因为 Aero Peek 功能,如果您将鼠标悬停在正在运行的程序图标上的任务栏上,则会显示窗口的整个高度,包括屏幕外组件。 (见右侧高窗,设置为比我的显示高出 6000 像素)
【问题讨论】:
-
由于赏金,我不能作为重复关闭,但你看到了吗:Capture screen of Windows store App
-
您拥有该应用程序吗?因为在一般情况下,如果应用程序有部分屏幕外,没有什么可以保证屏幕外的内容可以物理呈现。在一般情况下,您只能捕获屏幕上显示的内容(例如 graphics.CopyFromScreen)。
-
不,我不拥有该应用程序。我正在尝试从用 .NET 4.6.1 编写的控制台应用程序中捕获 Windows 商店应用程序。
-
看看下面提供的解决方案。
-
@Richtofen:运气好吗?我正在尝试从另一个应用程序获取运行 Windows 商店应用程序的屏幕截图。
标签: c# windows-store-apps screen-capture