- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
因此,我在尝试使用 PrintWindow API 为位于非事件桌面上的窗口拍照时遇到了一个问题,它开始让我感到不安。
问题是对于一个特定的窗口,即使 PrintWindow 成功并且我得到了我想要的窗口的图像,该图像始终是上次桌面处于事件状态时的过时拷贝。起初我以为窗口没有接收到任何输入,但经过一些检查后我注意到它仍然接收并处理输入,但在其桌面再次被激活之前不会呈现任何变化。我在 Windows 7 和 10 中进行了测试,这只发生在 Windows 10 中。
经过更多的检查,我发现主窗口实际上如预期的那样更新了它自己,并且它的子窗口覆盖了主窗口的所有客户区,谁是罪魁祸首。这 2 个窗口是使用以下样式创建的:
类样式: 0x00000003 = CS_VREDRAW | CS_HREDRAW
父扩展样式:0x00000000
父级标准样式:0x96000000 = WS_POPUP | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS
子扩展样式:0x00000020 = WS_EX_TRANSPARENT
子标准样式:0x56300000 = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_HSCROLL | WS_VSCROLL
我已经尝试了无数种尝试来解决这个问题,而且我在网上进行了大量搜索,但都无济于事。我非常沮丧,如果至少没有人能对此提出解释,我准备放弃。
最佳答案
Windows 不会渲染不可见的窗口。您将获得当前图像,这与将鼠标悬停在任务栏图标上时获得小预览窗口时获得的图像相同。
如果程序本身没有显式调用渲染函数,窗口将不会更新。如果窗口更新,则无法获取窗口当前外观的屏幕截图。
关于c++ - Windows 10 中非事件桌面上的 PrintWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46432965/
我正在一个大项目中实现一个打印函数来打印所谓的小工具(派生自 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
我是一名优秀的程序员,十分优秀!