PrintWindow和Microsoft Edge

时间:2015-07-14 11:25:54

标签: windows winapi windows-10 microsoft-edge

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

有谁知道这个的原因以及如何修复/避免?或者也许是其他一些方法来捕捉窗口的图像,可以在后台并隐藏在另一个窗口后面?

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

2 个答案:

答案 0 :(得分:0)

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

我刚刚尝试使用Microsoft Edge和Chrome上的计算机,并在两者上工作。希望能够完成这项工作!

答案 1 :(得分:0)

我和IE有同样的问题 try this。 最稳定的结果是双重调用

PrintWindow(hWnd, hdcScreen, 0);
PrintWindow(hWnd, hdcScreen, PW_CLIENTONLY);