自己寫遠端控制軟體之捕捉螢幕
函式說明:
為保證影象質量,我選用 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;
}
相關文章
- 自己寫遠端控制軟體之隱藏介面
- 自己寫遠端控制軟體之網路傳輸
- 自己寫遠端控制軟體之鍵鼠響應
- 自己寫遠端控制軟體之偵測伺服器伺服器
- 自己寫遠端控制軟體之影象壓縮
- 遠端控制篇:抓取遠端螢幕影像 (轉)
- 遠端桌面控制軟體,遠端桌面控制軟體推薦,及其連線方法
- vnc遠端控制軟體,vnc遠端控制軟體有什麼用,操作教程VNC
- VNC遠端控制軟體XP版,VNC遠端控制軟體XP版下載VNC
- 遠端控制軟體 LogMeIn
- vnc遠端控制軟體怎麼用,vnc遠端控制軟體怎麼用,使用教程VNC
- vnc遠端控制軟體,vnc遠端控制軟體怎麼使用,vnc server如何安裝?VNCServer
- 透過終端控制螢幕亮度
- 釋出一個螢幕捕捉類
- 螢幕調節軟體
- VNC遠端控制軟體:VNC Server for MacVNCServerMac
- VNC Server for Mac(VNC遠端控制軟體)VNCServerMac
- 沒有螢幕也能遠端控制?ToDesk的虛擬屏做到了!
- 遠端控制軟體哪個好用?精選安全遠控軟體ToDesk
- 如何遠端投屏實現螢幕共享
- 用Delphi實現遠端螢幕抓取 (轉)
- vnc遠端控制軟體x64,vnc遠端控制軟體x64安裝方法,及使用教程VNC
- vnc遠端控制軟體中文版,細數五款好用的vnc遠端控制軟體中文版VNC
- SPX螢幕截圖軟體
- 2024遠端控制軟體排名1
- 國外遠端控制軟體排行榜
- TeamViewer遠端控制軟體,讓你享受遠端辦公的便利View
- vnc遠端控制軟體綠色,vnc遠端控制軟體綠色版下載,使用者登入使用教程VNC
- ScreenFlow螢幕錄影軟體
- 最佳RDP/VPN替代方案:Splashtop遠端控制軟體
- 高流暢的遠端控制軟體推薦
- 向React Native應用新增螢幕捕捉功能React Native
- 八大遠端控制軟體,完美替代TeamviewerView
- 開源一款遠端控制軟體 —— pcshare
- ScreenFlow mac(螢幕錄影軟體)Mac
- 少俠學截圖-C#螢幕捕捉的方式C#
- 螢幕錄製軟體是怎麼錄製電腦螢幕影片的?
- 螢幕控制示例程式