自己写远程控制软件之捕捉屏幕
来源:互联网 发布:淘宝透明内衣买家晒图 编辑:程序博客网 时间:2024/04/29 08:41
函数说明:
为保证图像质量,我选用 24 位位图,后面再说如何压缩成 JPG。
函数如下:
void CaptureScreen(PCHAR lpBuffer, DWORD dwLength, DWORD dwWidth, DWORD dwHeight, DWORD &dwBitmapSize);
lpBuffer 存储以下信息:
BITMAPFILEHEADER
BITMAPINFOHEADER
RGB 数据
为保证图像质量,我选用 24 位位图,后面再说如何压缩成 JPG。
函数如下:
void CaptureScreen(PCHAR lpBuffer, DWORD dwLength, DWORD dwWidth, DWORD dwHeight, DWORD &dwBitmapSize);
lpBuffer 存储以下信息:
BITMAPFILEHEADER
BITMAPINFOHEADER
RGB 数据
void CaptureScreen(PCHAR lpBuffer, DWORD dwLength, DWORD dwWidth, DWORD dwHeight, DWORD &dwBitmapSize){dwBitmapSize = 0;HWND hDesktopWnd= ::GetDesktopWindow();HDC hDesktopDC= ::GetDC(hDesktopWnd);HDC hCaptureDC= ::CreateCompatibleDC(hDesktopDC);HBITMAP hBitmap = ::CreateCompatibleBitmap(hDesktopDC, dwWidth, dwHeight);LPBITMAPFILEHEADER pFileHeader= (LPBITMAPFILEHEADER) lpBuffer;LPBITMAPINFO pBitmapInfo = (LPBITMAPINFO) (lpBuffer + sizeof(BITMAPFILEHEADER));::SelectObject(hCaptureDC, hBitmap);::BitBlt(hCaptureDC, 0, 0, dwWidth, dwHeight, hDesktopDC, 0, 0, SRCCOPY);BITMAP bmpBit = { 0 };::GetObject(hBitmap, sizeof(BITMAP), &bmpBit);pBitmapInfo->bmiHeader.biSize= sizeof(BITMAPINFOHEADER);pBitmapInfo->bmiHeader.biWidth= bmpBit.bmWidth;pBitmapInfo->bmiHeader.biHeight= bmpBit.bmHeight;pBitmapInfo->bmiHeader.biPlanes= 1;pBitmapInfo->bmiHeader.biBitCount= 24;pBitmapInfo->bmiHeader.biCompression= 0;pBitmapInfo->bmiHeader.biSizeImage= bmpBit.bmWidthBytes * bmpBit.bmHeight;pBitmapInfo->bmiHeader.biXPelsPerMeter= 0;pBitmapInfo->bmiHeader.biYPelsPerMeter= 0;pBitmapInfo->bmiHeader.biClrUsed= 0;pBitmapInfo->bmiHeader.biClrImportant= 0;pFileHeader->bfType= 0x4D42;pFileHeader->bfOffBits= sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER);pFileHeader->bfSize= pBitmapInfo->bmiHeader.biSizeImage + pFileHeader->bfOffBits;pFileHeader->bfReserved1= 0;pFileHeader->bfReserved2= 0;PCHAR pBmpData = lpBuffer + sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER);::GetDIBits(hCaptureDC, hBitmap, 0, bmpBit.bmHeight, pBmpData, pBitmapInfo, DIB_RGB_COLORS);::ReleaseDC(hDesktopWnd, hDesktopDC);::DeleteDC(hCaptureDC);::DeleteObject(hBitmap);dwBitmapSize = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + pBitmapInfo->bmiHeader.biSizeImage;}
- 自己写远程控制软件之捕捉屏幕
- 自己写远程控制软件之总览
- 自己写远程控制软件之网络传输
- 自己写远程控制软件之图像压缩
- 自己写远程控制软件之键鼠响应
- 自己写远程控制软件之隐藏界面
- 自己写远程控制软件之侦测服务器
- 远程控制 远程监控软件屏幕实用技巧
- 屏幕捕捉软件
- VC++远程屏幕控制的分析1----软件初始架构
- 远程控制软件
- 远程控制软件
- 智深叫道 远程控制软件
- 俟候柴进回庄 远程控制软件
- 远程控制软件
- 远程控制软件
- 远程控制软件
- 远程控制软件调研
- JS弹出选择框
- Eclipse复制或修改项目后,把项目部署后发现还是原来的项目名称
- Android多媒体浅析
- 项目文档归档参考规范
- Ajax工作原理
- 自己写远程控制软件之捕捉屏幕
- java中System.currentTimeMillis()和System.nanoTime()区别1
- Codejam 2009 qualification round question C
- Makefile 中:= ?= += =的区别
- 2013 前20名榜单排行榜
- DB2中如何使用SQL查找非连续数值
- 判别式模型与生成式模型
- oracle profile总结
- java格式化字符串