-
-
[旧帖] [原创]使用DC截取屏幕图像 0.00雪花
-
发表于: 2012-8-22 17:58 2506
-
在截取屏幕图像时,一般直接截屏或模拟按键实现截屏,而用DC截屏的很少。用DC截屏具有以下特点:
1、不用剪贴板
2、截图可自由控制
3、代码量比一般截图稍大
废话不多说贴代码:
CapScreen proc
local @sDesk,@ScreenDC,@MemDC,@OldBmp;定义变量
local @Rect:RECT
invoke GetDesktopWindow;获取桌面句柄
mov @Desk, eax
invoke GetDC, @Desk;获取桌面DC
mov @ScreenDC, eax
invoke CreateCompatibleDC, @ScreenDC;创建DC
mov @MemDC, eax
invoke GetWindowRect, Desk, addr @sRect
invoke CreateCompatibleBitmap, @ScreenDC, @sRect.right-@sRect.left, @sRect.bottom-@sRect.top;获取句柄
push eax
invoke SelectObject, @MemDC, eax;替换对象
mov @OldBmp, eax
invoke BitBlt, @MemDC, 0, 0, @sRect.right-@sRect.left, @sRect.bottom-@sRect.top, @ScreenDC, @sRect.left, @sRect.top, SRCCOPY
invoke SelectObject, @MemDC, @OldBmp
invoke DelectObject, @MemDC
invoke ReleaseDC, @Desk, @ScreenDC;释放句柄
pop eax
ret
CapScreen endp
以上代码实现截图,返回值就是位图的句柄
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
- [原创]近期撸的一个 Win32 平台开源小工具集合 6980
- [原创]用汇编构造sprintf函数 3766
- [原创]使用DC截取屏幕图像 2507
- [原创]C++实现3D应用程序开发示例,顺便申请邀请码 3117