gpt4 book ai didi

c++ - 获取背景窗口的缩略图

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:35 24 4
gpt4 key购买 nike

我正在尝试获取不可见窗口的缩略图。

这是我目前的代码

BOOL CALLBACK WindowProc(HWND hWnd, LPARAM lParam)
{
RECT WindRect;
GetWindowRect(hWnd, &WindRect)
CurrentScreenShot->Next = new ScreenShotList();
CurrentScreenShot = CurrentScreenShot->Next;

HDC SourceDC = GetDC(hWnd);
HDC TargetDC = CreateCompatibleDC(SourceDC);
CurrentScreenShot->ScreenShot = CreateCompatibleBitmap(SourceDC, WindRect.right - WindRect.left, WindRect.bottom - WindRect.top);

BitBlt(TargetDC, 0, 0, WindRect.right - WindRect.left, WindRect.bottom - WindRect.top, SourceDC, 0, 0, SRCCOPY);

ReleaseDC(hWnd, SourceDC);

g_iWindows++;
return TRUE;
}

目前,WindowProc 是直接使用FindWindow 调用来获取句柄,不过,我最终想使用EnumWindows 来循环所有窗口获取它们的缩略图并将它们存储在一个链表中。

WindowProc(FindWindow(NULL, L"File Explorer"), 0);

此代码位于 DLL 中,该 DLL 从 C# Forms 应用程序调用。目前,C# 应用程序仅获取位图并将其保存到文件中。

问题是,除非我使用 FindWindow 获取可见窗口(也恰好是 C# 应用程序),否则图片最终会变成黑框。

是否可以获取背景窗口的图片?

编辑:这是一个 Windows Mobile 应用程序

最佳答案

不可见的 Windows 不会重绘,这就是为什么您无法从 DC​​ 获取其内容的原因。尝试发送 WM_PRINT向目标窗口发送消息以请求它将其内容绘制到您的 DC。

编辑:

抱歉,我没有注意到这是针对 Windows Mobile 的。除了 WM_PRINT,我不知道有什么方法可以获取不可见窗口的内容。当然,您仍然可以显示该窗口(并确保它位于顶部/未被其他窗口覆盖),然后运行您拥有的代码,但这可能有点困惑。

关于c++ - 获取背景窗口的缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com