- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 PrintWindow
让 chrome 在我的 Canvas 上绘画。这是我用来呈现桌面捕获的代码
PRECT lpRect;
GetWindowRect(g_Window, lpRect);
HDC hDeviceContext =
CreateCompatibleDC(g_DeviceContextMain);
HBITMAP hBitmapWindow =
CreateCompatibleBitmap(g_DeviceContextMain, lpRect->right - lpRect->left, lpRect->bottom - lpRect->top);
SelectObject(hDeviceContext, hBitmapWindow);
if (PrintWindow(g_Window, hDeviceContext, g_IsAtleast81 ? 0x00000002 : NULL)) {
BitBlt(g_DeviceContextClient,
lpRect->left, lpRect->top, lpRect->right - lpRect->left, lpRect->bottom - lpRect->top, hDeviceContext, NULL, NULL, SRCCOPY);
}
DeleteObject(hBitmapWindow);
DeleteDC(hDeviceContext);
这是我打开 chrome 并捕获屏幕时的输出 (Windows 7)
我可以在 Windows 10 中通过将 PW_RENDERFULLCONTENT
标志添加到 PrintWindow
来修复此问题,但不幸的是,此标志仅在 Windows 8.1 及更高版本中可用。我需要让它在 Windows 7/8 中运行。
我还尝试在捕获屏幕之前禁用 chrome 中的硬件加速。结果还是一样!
有什么办法可以解决这个问题,使主窗口的绘制不带黑色矩形?或者在 Windows < 8 中复制 PW_RENDERFULLCONTENT
对 Windows >= 8.1 的作用?
最佳答案
您可能无法使用 PrintWindow 打印 chrome 窗口,但您可以使用 BitBlt .与 PrintScreen 不同,该函数只会获取屏幕的一部分,因此您无法获取最小化窗口的位图。
以及它是如何在 webrtc 中实现的: https://cs.chromium.org/chromium/src/third_party/webrtc/modules/desktop_capture/window_capturer_win.cc
关于c - 使用 PrintWindow 渲染 chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119033/
我正在一个大项目中实现一个打印函数来打印所谓的小工具(派生自 CWnd)。在小工具类中,我创建了一个函数来将其呈现到设备上下文 PrintPageContent(CDC * pDC, const CR
我在 Windows XP 上,我正在 try catch 一个窗口。 但是当我捕获一个窗口时,我得到了窗口标题(名称和图标)但是窗口的整个内容都是黑色的。 当试图保存图片时,整个图片是透明的。 这是
我正在使用 PrintWindow 制作 IE 的屏幕截图。问题是有时我会得到带有黑色区域的图像。它可能是整个 html 内容什么是黑色的,有时只有某些区域是黑色的。 IE 的内容在拍摄之间不会改变。
我正在尝试截取 Chrome 窗口的屏幕截图。它看起来像这样: 当我使用 PrintWindow 时要获取屏幕截图,我可以在窗口标题栏/Chrome 选项卡区域看到闪烁。捕获的屏幕截图包含 Windo
经过几个小时的谷歌搜索,我设法“写下”了这个: import win32gui from ctypes import windll hwnd = win32gui.FindWindow(None, '
因此,我在尝试使用 PrintWindow API 为位于非事件桌面上的窗口拍照时遇到了一个问题,它开始让我感到不安。 问题是对于一个特定的窗口,即使 PrintWindow 成功并且我得到了我想要的
我正在尝试使用 PrintWindow 让 chrome 在我的 Canvas 上绘画。这是我用来呈现桌面捕获的代码 PRECT lpRect; GetWindowRect(g_Window, lpR
我已经成功地让 PrintWindow 在 C++ 中工作,但是当我尝试在 C# 中工作时,我得到了一个包含空数据的位图。在 .NET 4.0 上使用 VS 2012 Pro。这是我的代码:
我的目标是在笔记本电脑屏幕关闭时截取应用程序的屏幕截图,但屏幕截图将始终与关闭屏幕之前的屏幕截图相同。一旦屏幕关闭,它不会重新绘制自身,并保持卡住状态。 我正在使用 Python 中的 printwi
我正在使用 PrintWindow API 截取特定窗口 (hwnd) 的屏幕截图。这工作得很好,它截取了整个窗口的屏幕截图。我的问题是:我的窗口高度是 742,宽度是 653。如果我想截取窗口中间某
当使用 Print Screen+Alt 组合键手动捕获窗口时,我得到以下信息: 但如果我尝试使用 Windows API 以编程方式执行此操作,我明白了: 为什么会出现差异?我如何以编程方式获得第一
我有一个 C++ 程序可以捕获特定窗口的屏幕截图并使用以下代码保存 int main() { GdiplusStartupInput gdiplusStartupInput; ULON
我在 HTML 页面中有一个部分需要打印。我使用下面的JS方法来打印它。 printWindow.print(); 我就是这样做的。 $("#toprint").on("click", functio
我使用的是 Microsoft Visual Studio 2010 和 Windows 7 Professional。这是我将窗口图像复制到剪贴板的代码: void PrintWindowEx( H
我是一名优秀的程序员,十分优秀!