首页
社区
课程
招聘
[旧帖] [原创]使用DC截取屏幕图像 0.00雪花
发表于: 2012-8-22 17:58 2506

[旧帖] [原创]使用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期)

收藏
免费 6
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//