日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www,日韩| 日操操| 日韩欧美的一区二区 | 欧美黄色性 | 99久久精品国产成人一区二区 | 欧美视频 | 五月天亚洲综合 | 91tv国产成人福利 | 欧美熟妇精品久久久久久 | 免费看一级 | 丰满少妇在线观看网站 | 免费成人蒂法网站 | 日日操天天 | 丁香伊人网 | 91精品国产综合久久久蜜臀粉嫩 | 欧美性激情 | 久久99国产精品 | 中文字幕在线视频一区二区 | 一区二区三区四区av | 美女洗澡隐私免费网站 | 亚洲成人网在线播放 | 国产尤物在线视频 | 91免费网| 久色99 | 精品视频一二三区 | 国语对白清晰刺激对白 | 日本三级片在线观看 | 不卡的av网站 | www.久久色 | 朝鲜美女黑毛bbw | 亚洲av无码一区二区三区人妖 | 致单身男女免费观看完整版 | 亚洲AV无码国产精品国产剧情 | 亚洲精品少妇久久久久久 | 国产精品麻豆欧美日韩ww | 日韩一区不卡视频 | 草久免费视频 | 国产aⅴ一区二区三区 | 加勒比视频在线观看 | 老妇高潮潮喷到猛进猛出 | 中国一级特黄真人毛片免费观看 | 日本强好片久久久久久aaa | 日韩不卡一二三区 | 国产一级在线 | 欧美brazzers| 欧美综合专区 | 操少妇视频| 免费av小说 | 日本丰满少妇一区二区三区 | 精品91av | 精品国产免费视频 | 波多野 在线 | 久久中文精品 | 日日射夜夜 | 亚洲高清影院 | 特黄aaaaaaa片免费视频 | 国产精品日韩欧美一区二区三区 | 中文字幕+乱码+中文乱 | 男女网站在线观看 | 亚洲图片在线观看 | 99久久99久久精品国产片果冰 | 成人黄色在线观看 | 国产一区二区三区福利 | 丁香婷婷在线观看 | 丰满少妇xbxb毛片日本 | 日韩国产在线一区 | 91沈先生在线 | 草草影院第一页yycc.com | 日日骚av| 亚洲精品欧洲精品 | 中国一级黄色大片 | 91网址在线| 亚洲精品一二三四 | 99热在线观看 | 青青国产视频 | 男女免费观看视频 | 成人拍拍拍 | 亚洲一区二区三区激情 | 国产自在线拍 | 91精品国产高潮对白 | 亚洲熟女一区二区 | 激情伦成人综合小说 | 色中色在线视频 | 国产调教打屁股xxxx网站 | 国产网址 | 在线观看羞羞漫画 | 折磨小男生性器羞耻的故事 | 国产日批视频 | 欧美性极品少妇xxxx | 日本不卡一区二区三区视频 | 免费观看全黄做爰的视频 | 99久久婷婷 | 日日夜夜91 | 日韩av在线网 | 中文有码av | 成全影视在线观看第8季 | 一级黄视频| 国产免费无码XXXXX视频 | av不卡在线观看 |