被截图的窗口不是程序内窗口
时间: 2023-12-02 18:02:53 浏览: 33
如果您需要截取的窗口不是您自己程序内的窗口,可以使用 Windows API 中的 FindWindow 函数来查找指定窗口的句柄。
以下是一个示例代码,用于获取指定窗口的句柄,并对其进行截图:
```C++
// 查找指定窗口的句柄
HWND hwnd = FindWindow(NULL, L"窗口标题");
// 获取窗口的设备上下文
HDC hdcWindow = GetDC(hwnd);
// 获取窗口的客户区大小
RECT rect;
GetClientRect(hwnd, &rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
// 创建一个和窗口设备上下文兼容的位图
HDC hdcMemDC = CreateCompatibleDC(hdcWindow);
HBITMAP hbmScreen = CreateCompatibleBitmap(hdcWindow, width, height);
HBITMAP hbmOldBitmap = (HBITMAP)SelectObject(hdcMemDC, hbmScreen);
// 将窗口的内容复制到位图中
BitBlt(hdcMemDC, 0, 0, width, height, hdcWindow, 0, 0, SRCCOPY);
// 将位图转换成 QImage 对象
BITMAP bm;
GetObject(hbmScreen, sizeof(bm), &bm);
BITMAPINFOHEADER bi = { sizeof(BITMAPINFOHEADER), bm.bmWidth, -bm.bmHeight, 1, 32, BI_RGB };
QImage image((const uchar*)bm.bmBits, bm.bmWidth, bm.bmHeight, QImage::Format_ARGB32);
image = image.mirrored(false, true);
// 将 QImage 对象转换成 QPixmap 对象
QPixmap pixmap = QPixmap::fromImage(image);
// 保存截图
pixmap.save("screenshot.png");
// 清理资源
SelectObject(hdcMemDC, hbmOldBitmap);
DeleteObject(hbmScreen);
DeleteDC(hdcMemDC);
ReleaseDC(hwnd, hdcWindow);
```
其中,L"窗口标题" 是需要查找的窗口标题。如果找到了相应的窗口,函数将返回其句柄。
如果还有问题,可以将您的代码贴出来,我会更具体地帮您分析问题。
相关推荐
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)