1

我们在 Windows 10(内部版本 10166)上的 PrintWindow 功能存在问题。当我们调用 PrintWindow ( https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd162869(v=vs.85).aspx ) 来捕获 Microsoft Edge (Project Spartan) 浏览器窗口的图像时我们得到一个黑色的图像。

有谁知道这是什么原因以及如何解决/避免它?或者可能是其他方式来捕获窗口图像,可以在背景中并隐藏在另一个窗口后面?

更新:我们尝试发送 WM_PRINTCLIENT 和 WM_PRINT 消息,并使用 WM_PRINT 调用 DefWindowProc,但结果是相同的 - 只是一个黑色图像。我们还尝试使用 BitBlt 将窗口的 DC 复制到内存表面,但它也不起作用。我们现在拥有的最佳解决方案是将浏览器窗口置于前台,捕获整个屏幕并将屏幕截图裁剪为窗口的客户端大小;但由于切换当前正在使用的应用程序,它可能会中断和惹恼用户。

4

2 回答 2

0

我对 IE 有同样的问题, 试试这个。最稳定的结果是双重调用

PrintWindow(hWnd, hdcScreen, 0);
PrintWindow(hWnd, hdcScreen, PW_CLIENTONLY);
于 2017-02-02T09:49:42.933 回答
0

如果你想在浏览器上截取页面。试试这个 JavaScript 库:http ://html2canvas.hertzen.com/ 该脚本遍历它加载的页面的 DOM。它收集那里所有元素的信息,然后用它来构建页面的表示。换句话说,它实际上并没有截取页面的屏幕截图,而是根据它从 DOM 读取的属性构建它的表示。

我刚刚在我的机器上尝试了 Microsoft Edge 和 Chrome 并在两者上都工作过。希望能完成这项工作!

于 2015-11-23T08:27:48.823 回答