日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows API 实现截图

發(fā)布時間:2025/3/19 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows API 实现截图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考:http://bbs.csdn.net/topics/330154355

#include "stdio.h" #include "windows.h" /************************************************************************/ /* hBitmap 為剛才的屏幕位圖句柄 /* lpFileName 為須要保存的位圖文件名稱 /************************************************************************/ int SaveBitmapToFile(HBITMAP hBitmap,LPSTR lpFileName) { HDC hDC; //設(shè)備描寫敘述表int iBits;//當(dāng)前顯示分辨率下每一個像素所占字節(jié)數(shù)WORD wBitCount;//位圖中每一個像素所占字節(jié)數(shù) DWORD dwPaletteSize=0;//定義調(diào)色板大小DWORD dwBmBitsSize;//位圖中像素字節(jié)大小DWORD dwDIBSize;// 位圖文件大小DWORD dwWritten;//寫入文件字節(jié)數(shù)BITMAP Bitmap;//位圖結(jié)構(gòu)BITMAPFILEHEADER bmfHdr; //位圖屬性結(jié)構(gòu) BITMAPINFOHEADER bi; //位圖文件頭結(jié)構(gòu)LPBITMAPINFOHEADER lpbi; //位圖信息頭結(jié)構(gòu) 指向位圖信息頭結(jié)構(gòu)HANDLE fh;//定義文件句柄HANDLE hDib;//分配內(nèi)存句柄HANDLE hPal;//分配內(nèi)存句柄HANDLE hOldPal=NULL;//調(diào)色板句柄 //計(jì)算位圖文件每一個像素所占字節(jié)數(shù) hDC = CreateDC("DISPLAY",NULL,NULL,NULL); iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES); DeleteDC(hDC);if (iBits <= 1) wBitCount = 1; else if (iBits <= 4) wBitCount = 4; else if (iBits <= 8) wBitCount = 8; else if (iBits <= 24)wBitCount = 24;else if (iBits<=32)wBitCount = 24;//計(jì)算調(diào)色板大小 if (wBitCount <= 8) dwPaletteSize = (1 << wBitCount) *sizeof(RGBQUAD);//設(shè)置位圖信息頭結(jié)構(gòu) GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap); bi.biSize = sizeof(BITMAPINFOHEADER); bi.biWidth = Bitmap.bmWidth; bi.biHeight = Bitmap.bmHeight; bi.biPlanes = 1; bi.biBitCount = wBitCount; bi.biCompression = BI_RGB; bi.biSizeImage = 0; bi.biXPelsPerMeter = 0; bi.biYPelsPerMeter = 0; bi.biClrUsed = 0; bi.biClrImportant = 0; dwBmBitsSize = ((Bitmap.bmWidth *wBitCount+31)/32)* 4*Bitmap.bmHeight ;//為位圖內(nèi)容分配內(nèi)存 hDib = GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER)); lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);if (lpbi==NULL){return 0;}*lpbi = bi; // 處理調(diào)色板hPal = GetStockObject(DEFAULT_PALETTE); if (hPal){ hDC = GetDC(NULL); hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE); RealizePalette(hDC); } // 獲取該調(diào)色板下新的像素值 GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight, (LPSTR)lpbi + sizeof(BITMAPINFOHEADER)+dwPaletteSize,(LPBITMAPINFO)lpbi, DIB_RGB_COLORS); //恢復(fù)調(diào)色板 if (hOldPal) { SelectPalette(hDC, (HPALETTE)hOldPal, TRUE); RealizePalette(hDC); ReleaseDC(NULL, hDC); } //創(chuàng)建位圖文件 fh = CreateFile(lpFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (fh == INVALID_HANDLE_VALUE) return FALSE;// 設(shè)置位圖文件頭 bmfHdr.bfType = 0x4D42; // "BM" dwDIBSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)+ dwPaletteSize + dwBmBitsSize; bmfHdr.bfSize = dwDIBSize; bmfHdr.bfReserved1 = 0; bmfHdr.bfReserved2 = 0; bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER)+ dwPaletteSize;// 寫入位圖文件頭 WriteFile(fh, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);// 寫入位圖文件其余內(nèi)容 WriteFile(fh, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL);//清除 GlobalUnlock(hDib); GlobalFree(hDib); CloseHandle(fh);return 1; }HBITMAP GetCaptureBmp() {HDC hDC; HDC MemDC; BYTE* Data; HBITMAP hBmp; BITMAPINFO bi; memset(&bi, 0, sizeof(bi)); bi.bmiHeader.biSize = sizeof(BITMAPINFO);bi.bmiHeader.biWidth = GetSystemMetrics(SM_CXSCREEN); bi.bmiHeader.biHeight = GetSystemMetrics(SM_CYSCREEN); bi.bmiHeader.biPlanes = 1; bi.bmiHeader.biBitCount = 24; hDC = GetDC(NULL); MemDC = CreateCompatibleDC(hDC); hBmp = CreateDIBSection(MemDC, &bi, DIB_RGB_COLORS, (void**)&Data, NULL, 0); SelectObject(MemDC, hBmp); BitBlt(MemDC, 0, 0, bi.bmiHeader.biWidth, bi.bmiHeader.biHeight,hDC, 0, 0, SRCCOPY); ReleaseDC(NULL, hDC); DeleteDC(MemDC); return hBmp; } void main() {HBITMAP hBmp; hBmp = GetCaptureBmp(); SaveBitmapToFile(hBmp,"c:\\11.bmp"); }

總結(jié)

以上是生活随笔為你收集整理的windows API 实现截图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩网站 | 天堂成人av| 欧美日韩综合一区 | 黑名单上的人全集免费观看 | aaa久久 | 国产乱码精品一区二区三区五月婷 | 一区二区精品视频在线观看 | 国产永久在线 | 亚洲精品大片www | 国产成人a亚洲精v品无码 | 伊人性视频 | 欧美午夜理伦三级在线观看 | 久热国产精品视频 | 日韩一区二区三区免费视频 | 91国在线视频 | 日韩第九页| 午夜不卡av免费 | 视频国产一区 | 九九啪 | 男女涩涩网站 | 黄色网av | 女性裸体无遮挡胸 | 色综合久久精品亚洲国产 | 4438成人网| 少妇高潮av | av2014天堂网| 亚洲精品少妇久久久久久 | 国产一级在线免费观看 | av最新地址 | 99在线精品视频免费观看软件 | 丝袜调教91porn | 国产又黄又粗又猛又爽 | a级片网站 | 91免费网站视频 | 欧美乱论视频 | 极品少妇在线 | 蜜桃臀aⅴ精品一区二区三区 | 成年人黄视频 | 人妻精品一区二区在线 | 日本五十熟hd丰满 | 国产欧美精品一区二区 | 污视频在线观看网址 | 中文在线字幕免费观看电 | 白丝久久 | 阿拉伯性视频xxxx | 三男一女吃奶添下面 | 无码精品人妻一区二区三区湄公河 | 阿v天堂在线 | 97在线看 | 亚洲福利午夜 | 少妇一夜三次一区二区 | 日本黄色xxx| 日韩一区二区中文字幕 | 毛片网站在线观看 | 99久久这里只有精品 | 超碰在线视屏 | 黄色视屏免费 | 亚洲第9页 | 屁屁影院一区二区三区 | 男人天堂怡红院 | 亚洲激情网站 | 国产性猛交╳xxx乱大交 | 精品无码一区二区三区的天堂 | 中文日韩 | 亚洲伊人色| 日本黄色高清视频 | 亚洲美女屁股眼交3 | 日本理论片午伦夜理片在线观看 | av国产在线观看 | 亚洲污污视频 | 国产网址 | 在线免费观看黄网站 | 香蕉视频免费在线观看 | 在线视频欧美日韩 | 在线播放一区 | 老司机一区二区 | 精品人妻少妇嫩草av无码专区 | 免费一区二区 | 亚洲永久精品在线观看 | 午夜影院体验区 | 伊人春色视频 | 国产一区二区三区免费 | 在线观看福利网站 | 双性娇喘浑圆奶水h男男漫画 | 亚洲福利在线视频 | 性xxxx搡xxxxx搡欧美 | 香蕉视频1024| 1024日韩 | 国产精品欧美久久久久久 | 91在线看 | 国产女人18毛片水真多18精品 | 亚洲大成色 | 久草网视频 | 天堂久久网 | 手机在线成人av | 性活交片大全免费看 | 欧美视频直播网站 | 国产精品美女久久久久久久 | 91午夜在线 |