1. 程式人生 > >windows系統抓屏技術

windows系統抓屏技術

一,GDI

GDI抓屏

       所有的windows版本都通用的抓屏方式,這種抓屏方式相對比較慢,抓取一幀1080p的桌面需要5~8ms左右的時間。而且在vista以後的系統上,如果啟用Aero特效的話,效率較低。

        HDC window_dc = ::GetDC(::GetDesktopWindow());
		winWidth_ = GetDeviceCaps(window_dc, HORZRES);
		winHeight_ = GetDeviceCaps(window_dc, VERTRES);
		

		hTemp_ = CreateCompatibleDC(window_dc);
		memBitmap_ = CreateCompatibleBitmap(window_dc, winWidth_, winHeight_);
		oldmemBitmap_ = (HBITMAP)SelectObject(hTemp_, memBitmap_);

		int rgbSize = 4 * winWidth_ * winHeight_;

		bih_.biBitCount = 32;
		bih_.biCompression = BI_RGB;
		bih_.biHeight = -winHeight_;
		bih_.biPlanes = 1;
		bih_.biSize = sizeof(BITMAPINFOHEADER);
		bih_.biSizeImage = rgbSize;
		bih_.biWidth = winWidth_;


		BitBlt(hTemp_, 0, 0, winWidth_, winHeight_, window_dc, 0, 0, SRCCOPY | CAPTUREBLT);

		CURSORINFO ci;
		ci.cbSize = sizeof(CURSORINFO);
		GetCursorInfo(&ci);
		DrawIcon(hTemp_, ci.ptScreenPos.x, ci.ptScreenPos.y, ci.hCursor);

		GetDIBits(hTemp_, memBitmap_,
			0,
			winHeight_,
			rgbPtr_,
			(LPBITMAPINFO)&bih_,
			DIB_RGB_COLORS
		);

 
		// 存點陣圖檔案,注意:rgbPtr_存的是ARgb32的資料 ;

		DeleteDC(hTemp_);
		::ReleaseDC(::GetDesktopWindow(), window_dc);
		DeleteObject(memBitmap_);

二,DDraw

三,D3d

四, DXGI

       適用於win8以後的作業系統,win7以前的系統無法使用此介面,不支援抓區域性屏,只能是全屏

相關推薦

windows系統技術

一,GDI GDI抓屏        所有的windows版本都通用的抓屏方式,這種抓屏方式相對比較慢,抓取一幀1080p的桌面需要5~8ms左右的時間。而且在vista以後的系統上,如果啟用Aero特效的話,效率較低。 HDC window_dc =

Windows桌面共享中一些常見的技術

每個DirectX程式都包含一個被我們稱作緩衝的記憶體區域,其中儲存了和該程式有關的視訊記憶體內容,這在程式中被稱作後臺緩衝(Back Buffer),有些程式有不止一個的後臺緩衝。還有一個緩衝,在預設情況下每個程式都可以訪問-前臺緩衝。前臺緩衝儲存了和桌面相關的視訊記憶體內容,實質上就是螢幕影象。 我們的程

react-native windows系統報assets缺失 500錯誤

包管理器 tput asset code div 兼容 執行 較差 pla 指定版本,react-native是facebook用mac系統開發的,windows系統兼容較差,新版本更是問題很多, 相對老版本更加穩定 react-native init demo -

Linux(Deepin)和Windows系統Windows系統,無法進入

問題描述 這裡是後安裝了deepin而成的雙系統,Linux可以正常進入,但是Windows時常花屏無法進入 顯示卡驅動有問題,deepin是amd的,對於整合顯示卡的支援並不好。 解決方法 網上有網友說修改 /etc/default/grub檔案 取消

運維采集技術分享: 通過WMI監控NAT後的Windows系統

運維技術 it運維 勤智數碼 運維管理軟件 1、Windows OS和WMI簡介隨著互聯網技術的飛速發展,我們對於IT業務系統的服務能力要求越來越高。根據Gartner統計2017年1季度全球服務器出貨量超過125億美金,正在運行支撐各種業務的服務器數量更是龐大。這些服務器中有超過50%的服務

計算機基礎與作業系統 計算機系統簡介 計算機基礎知識 計算機的發展史及多道技術 計算機網路知識簡單介紹 Windows系統,Mac系統與Linux系統的的安裝與簡介 伺服器硬體基礎 Linux發展史 Linux伺服器遠端登入 Linux常用的150個命令彙總 在終端下寫Python程式碼

第一章:計算機系統簡介 第二章:計算機基礎知識 第三章:計算機的發展史及多道技術 第四章:計算機網路知識簡單介紹 第五章:Windows系統,Mac系統與Linux系統的的安裝與簡介 第六章:伺服器硬體基礎 第七章:Linux發展史 第八章:Linux伺服器遠端登入 第九

12月技術考核:Windows系統故障排查

系統故障排查 徹底 問題 系統故障 機器 考核 防火墻 測試 異常 一:Windows系統故障排查 1.無法遠程,將故障排查。 答:對於Windows系統無法遠程,要進行的排查步驟有:第一個是機器是否死機還是關機了;第二個是機器的系統裏邊的遠程設置是否打開了;第三個是機器的

基於 OpenWrt 實現 tcpdump 包並在 Windows 系統上的 Wireshark 中格式化顯示

工具: Openwrt 系統下的 tcpdump Windows 系統下的 Wireshark 和 plink 快捷鍵 在路由器的 Openwrt 系統下安裝 tcpdump 工具 在 Windows 系統下安裝 Wireshark 程式,

主機windows系統,虛擬機器linux系統與工控arm-linux之間使用tftp進行資料傳輸

1.保證三個系統之前能互相ping 通 2.開啟windows系統,linux系統的tftp-server windows使用tftp32工具。 linux 使用參考以下文章: 重啟xinetd服務: [email protected]:~$ sudo /etc/i

手機直播系統偶爾會需要到的:Windows 下視訊採集技術

  Windows下視訊採集的方法 在 Windows 下主要有兩種方法來採集視訊: 一種是通過 Media Foundation,另一種是通過 DirectShow。 Meida Foundation 是 Windows 從 vista 之後推出的一套全新的 多媒體SDK,簡

Hyper-V 啟用Windows系統重啟後黑的解決方法 + 啟用方法

載入安裝光碟ISO Shift+F10,輸入:bootrec /fixboot 恢復啟動了,但是還是未啟用 這邊說的是軟啟用(定期點一下,續啟用) 重啟後可以進入系統 已經啟用 其他啟用方法參考:(據說windows loader也可以啟用,可以試試

windows系統Fiddler、charles不支援firefox瀏覽器

在windows系統下,可以發現Fiddler、Charles都可以抓取到windows自帶瀏覽器的包,但是無法抓取firefox瀏覽器的包,以下是我解決該問題的方法: Fiddler支援firefox實現 首先:開啟Fiddler代理工具,頂層選單點選T

Kinect for Windows SDK v2.0 開發筆記 (四)玩家索引與綠技術

(轉載請註明出處) 使用SDK: Kinect for Windows SDK v2.0 public preview CSND部落格出現了已經發布了,修改了一個字就變成“待稽核”狀態導致慢更了, 不過反正幾乎沒人看也就影響為0啦。 這次說的是Kinect的玩家索引(B

Windows 系統慢?這並非技術原因

原文連結:http://blog.zorinaq.com/?e=74 I was explaining on Hacker News why Windows fell behind Linux in terms of operating system kernel pe

Windows 系統下安裝 dig 命令

通過 mat info span dns查詢 ber 環境變量 none class dig是一個Linux下用來DNS查詢信息的小工具,dig全稱是Domain Information Groper,與nslookup類似,但比nslookup功能更強大。Windows只

VMware裝Linux系統問題

點擊 錯誤 bsp 出現 ogr 意思 接下來 linux 文件的   在VMware上出裝Linux,有強迫癥的患者總是無法接受它不能全屏的問題,當然網上也有該問題的解決方案,但是搜索出來的答案總是零零散散,讓很多初學者望而卻步!今天筆者根據自己的機遇總結一遍最完備的解決

TensorFlow - 在 windows 系統上安裝

conda 安裝 rsh anaconda src 最新 之前 power ins 安裝方式: 1、pip (將介紹) 2、Anaconda 我采用的是本地 pip 方式 需提前安裝 Python - Python 3.5.x > TF 只支持 Python 3

針對目前windows系統的所有勒索病毒補丁和安全工具

windows 勒索病毒 安全工具 針對目前windows系統的所有勒索病毒補丁和安全工具https://pan.baidu.com/s/1boBiHNx 可以下載到內網進行安裝。本文出自 “simeon技術專欄” 博客,請務必保留此出處http://simeon.blog.51cto.com/1

Windows系統中網絡故障

百度百科 network windows 網絡服務 電腦網絡 前些時候,處理電腦的時候發現開機後電腦網絡符號直接是紅色感嘆號.分析:一般連接線問題,網絡服務關閉會出現紅色感嘆。網卡是好的,連接燈也是閃爍無問題;於是操作系統,發現打不開網絡中心,進入服務(services.msc),有幾個服

windows系統 安裝MongoDB

system32 mongod 追加 解壓 windows 鼠標 創建服務 安裝mongodb www 本篇文章記錄了我在win7 32位下安裝MongoDB的步驟,以作記錄。 一、下載MongoDB 下載地址:https://www.mongodb.com/downl