窗口截图(可指定HWND窗口句柄)
来源:互联网 发布:腾讯tim知乎 编辑:程序博客网 时间:2024/05/16 18:41
BOOL SaveHwndToBmpFile(HWND hWnd, LPCTSTR lpszPath) { HWND hDesktop = ::GetDesktopWindow(); ASSERT(hDesktop); if(NULL == hWnd) { hWnd = hDesktop; } RECT rect; ::GetWindowRect(hWnd, &rect); int nWidht = rect.right - rect.left; int nHeight = rect.bottom - rect.top; HDC hSrcDC = ::GetWindowDC(hWnd); ASSERT(hSrcDC); HDC hMemDC = ::CreateCompatibleDC(hSrcDC); ASSERT(hMemDC); HBITMAP hBitmap = ::CreateCompatibleBitmap(hSrcDC, nWidht, nHeight); ASSERT(hBitmap); HBITMAP hOldBitmap = (HBITMAP)::SelectObject(hMemDC, hBitmap); ::BitBlt(hMemDC, 0, 0, nWidht, nHeight, hSrcDC, 0, 0, SRCCOPY); BITMAP bitmap = {0}; ::GetObject(hBitmap, sizeof(BITMAP), &bitmap); BITMAPINFOHEADER bi = {0}; BITMAPFILEHEADER bf = {0}; CONST int nBitCount = 24; bi.biSize = sizeof(BITMAPINFOHEADER); bi.biWidth = bitmap.bmWidth; bi.biHeight = bitmap.bmHeight; bi.biPlanes = 1; bi.biBitCount = nBitCount; bi.biCompression = BI_RGB; DWORD dwSize = ((bitmap.bmWidth * nBitCount + 31) / 32) * 4 * bitmap.bmHeight; HANDLE hDib = GlobalAlloc(GHND, dwSize + sizeof(BITMAPINFOHEADER)); LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib); *lpbi = bi; ::GetDIBits(hMemDC, hBitmap, 0, bitmap.bmHeight, (BYTE*)lpbi + sizeof(BITMAPINFOHEADER), (BITMAPINFO*)lpbi, DIB_RGB_COLORS); try { CFile file; file.Open(lpszPath, CFile::modeCreate | CFile::modeWrite); bf.bfType = 0x4d42; dwSize += sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); bf.bfSize = dwSize; bf.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); file.Write((BYTE*)&bf, sizeof(BITMAPFILEHEADER)); file.Write((BYTE*)lpbi, dwSize); file.Close(); } catch(CFileException* e) { e->ReportError(); e->Delete(); } GlobalUnlock(hDib); GlobalFree(hDib); ::SelectObject(hMemDC, hOldBitmap); ::DeleteObject(hBitmap); ::DeleteDC(hMemDC); ::ReleaseDC(hWnd, hSrcDC); return TRUE; } // 调用方法 HWND hWnd = ::FindWindow(NULL, _T("XXX")); if(hWnd) { SaveHwndToBmpFile(hWnd, _T("F://12.bmp")); }
源自:http://blog.csdn.net/visualeleven/article/details/6202796
- 窗口截图(可指定HWND窗口句柄)
- 窗口截图(可指定HWND窗口句柄)
- 窗口截图(可指定HWND窗口句柄)
- 窗口截图(可指定HWND窗口句柄)
- win32 API窗口句柄 HWND
- 窗口句柄HWND和实例句柄HINSTANCE
- 句柄Hwnd 与 窗口Wnd的联系
- 获取控制台窗口的句柄(hWnd)
- 如何获取控制台窗口句柄 (HWND)
- 如何获取控制台窗口句柄 (HWND)
- 如何获取控制台窗口句柄 (HWND)
- mfc 根据窗口句柄(HWND)杀死进程
- pyQT指定窗口截图
- 如何获得窗口句柄(HWND )和改变窗口属性
- 如何获得窗口句柄(HWND )和改变窗口属性
- 进程句柄HANDLE获得进程主窗口的句柄HWND
- 关于有窗口句柄和无窗口句柄的截图
- void HighlightWindow( HWND hwnd, BOOL fDraw ) 高亮指定窗口
- ClassLoader学习小结
- On Simple Design II: 简单 != 少
- 內部類別
- c++primer第四版习题6.12答案更正
- eclipse 使用
- 窗口截图(可指定HWND窗口句柄)
- 网址
- VS2008清除空格显示成小数点.
- ubuntu下折腾ffmpeg小记(音视频录制、转换)
- linux在虚拟机上安装
- Python学习--自定义函数
- 串的实现
- sql积累--替换指定字段数据中的指定内容
- 算法复习--分治、减治、变治