找回密码
 加入
搜索
查看: 827|回复: 7

[AU3基础] 通过位图对象句柄截取指定区域

[复制链接]
发表于 2022-9-28 22:17:43 | 显示全部楼层 |阅读模式
本帖最后由 z761003 于 2022-9-28 22:25 编辑

论坛里搜了个后台截图的函数,可以截,可截图必须是从窗口左上角坐标 x=0 y=0开始截,想把它改成截取指定区域改不来,请教下获取了位图对象句柄 $hBitmap 如果截取其中的部分呢(指定坐标区域)
是不是使用_GDIPlus_BitmapCloneArea(),搞半天也没搞出来,希望谁能帮改下





Func _ScreenHideWindow($i_win_handle, $iW, $iH)
    Local $aRet = DllCall($dll, "hwnd", "GetWindowDC", "hwnd", $i_win_handle)
    If @error Then Return SetError(@error, 0, -1)
    Local $hDC = $aRet[0]
    $aRet = DllCall($hDLLGDI32, "hwnd", "CreateCompatibleDC", "hwnd", $hDC)
    If @error Then Return SetError(@error, 0, -1)
    Local $hMemDC = $aRet[0]
    $aRet = DllCall($hDLLGDI32, "hwnd", "CreateCompatibleBitmap", "hwnd", $hDC, "int", $iW, "int", $iH)
    If @error Then Return SetError(@error, 0, -1)
    Local $hBitmap = $aRet[0]

;想把截取 $hBitmap 指定区域
    $aRet = DllCall($hDLLGDI32, "hwnd", "SelectObject", "hwnd", $hMemDC, "hwnd", $hBitmap)
    If @error Then Return SetError(@error, 0, -1)
    Local $hOld = $aRet[0]
    $aRet = DllCall($dll, "int", "ReleaseDC", "hwnd", $i_win_handle, "hwnd", $hDC)
    If @error Then Return SetError(@error, 0, -1)
    _PrintWindow($i_win_handle, $hMemDC)
    $aRet = DllCall($hDLLGDI32, "hwnd", "SelectObject", "hwnd", $hMemDC, "hwnd", $hOld)
    If @error Then Return SetError(@error, 0, -1)
    $aRet = DllCall($hDLLGDI32, "int", "DeleteDC", "hwnd", $hMemDC)
    If @error Then Return SetError(@error, 0, -1)

    $aRet = DllCall($hDLLGDI32, "int", "DeleteObject", "int", $hBitmap)
    If @error Then Return SetError(@error, 0, -1)
   Return
EndFunc





Func _PrintWindow($hWnd, $hMemDC, $iFlag = 0)
    Local $aRet = DllCall($dll, "int", "PrintWindow", _
            "hwnd", $hWnd, _
            "hwnd", $hMemDC, _
            "int", $iFlag)
    Return $aRet[0]
EndFunc   ;==>_PrintWindow

发表于 2022-9-29 09:51:59 | 显示全部楼层
此人是骗子,谨防上当受骗。
发表于 2022-9-29 10:14:41 | 显示全部楼层

演示后,又以要demo 后续没下文

https://www.autoitx.com/thread-73120-1-1.html?_dsign=a6e32016



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2022-9-29 10:18:23 | 显示全部楼层
zhao_ming 发表于 2022-9-29 09:51
此人是骗子,谨防上当受骗。

有病要早点去看,别在网上丢人现眼
 楼主| 发表于 2022-9-29 10:19:29 | 显示全部楼层
自己解决了

Func hBitmapCap($hBitmap,$x,$y,$x2,$y2,$saveimg=True) ;位图句柄截取指定坐标和宽高
  _GDIPlus_StartUp ()

    Local $hImage = _GDIPlus_BitmapCreateFromHBITMAP ($hBitmap)
    _WinAPI_DeleteObject ($hBitmap)
    Local $hClone = _GDIPlus_BitmapCloneArea ($hImage, $x,$y,$x2-$x,$y2-$y, $GDIP_PXF24RGB)
    $hBitmap=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hClone)
    ; 保存位图文件
     _GDIPlus_ImageSaveToFile ($hClone, @DesktopDir & "\2.bmp")

    ; 清理资源
    _GDIPlus_ImageDispose ($hClone)
    _GDIPlus_ImageDispose ($hImage)

    _GDIPlus_ShutDown ()
   Return $hBitmap
EndFunc
 楼主| 发表于 2022-9-29 10:23:38 | 显示全部楼层

你一个GIF发过来都没通过,问你为什么里面有错误的,你回答你的GIF里有一张图片搞错了,人家的GIF是录像的,你的GIF还能一张一张图片自己拼的,你是神人!你才是个骗子,GIF还能拼凑给人家看,GIF都通不过我要你DEMO屁用,你个**,没通过也想要钱是吧,你这么想要钱让*****吧
 楼主| 发表于 2022-9-29 10:33:15 | 显示全部楼层
本帖最后由 z761003 于 2022-9-29 10:34 编辑

你个垃圾本来我都把你拉黑不来理你就算了,让你一个人吠,你还跑论坛里来丢人,既然你要吠,我发完整聊天让别人看看,你连演示都是错误的,还想来骗钱,难怪你自己说经常被别人割韭菜,,,,,你这不是人家割你韭菜,是人家碰上你这垃圾及时止损,你还不自知




发聊天让别人来评评,谁的问题,垃圾,论坛里是你撒野的地方吗,这是学习的地方

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2022-9-29 11:46:53 | 显示全部楼层
出于什么目地,你还用我来讲,谨防上当受骗。 说的只有这么多,没时间跟你这种没素质的人讲话。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 20:42 , Processed in 0.073764 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表