永发信息网

易语言 截图问题

答案:2  悬赏:50  手机版
解决时间 2021-03-08 02:02
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-03-07 09:28
易语言 截图问题
最佳答案
  • 五星知识达人网友:话散在刀尖上
  • 2021-03-07 09:56
窗口截图(句柄,12,127,130,55)

.版本 2
.子程序 窗口截图, 字节集, , 截取指定窗口的24位图,可截取窗口中指定区域,最小化窗口或不可见窗口无法截取位图
.参数 窗口句柄, 整数型, , 欲截取窗口图片的窗口句柄
.参数 左边, 整数型, 可空, 默认为0 在窗口中截取图片的左边(相对于窗口的左边偏移坐标)
.参数 顶边, 整数型, 可空, 默认为0 在窗口中截取图片的顶边(相对于窗口的顶边偏移坐标)
.参数 宽度, 整数型, 可空, 在窗口中截取图片的宽度(若为空,则为窗口宽度或客户区宽度)
.参数 高度, 整数型, 可空, 在窗口中截取图片的高度(若为空,则为窗口高度或客户区高度)
.参数 非客户区, 逻辑型, 可空, 默认为假:仅截取客户区内范围图片,不含标题边框 真:截取窗口范围图片
.局部变量 矩形区域, 矩形坐标
.局部变量 窗口大小, 矩形范围
.局部变量 窗口位置, 坐标型
.局部变量 新左边
.局部变量 新顶边
.局部变量 新宽度
.局部变量 新高度
.局部变量 屏幕设备上下文句柄, 整数型
.局部变量 内存设备上下文句柄, 整数型
.局部变量 位图句柄, 整数型
.局部变量 旧位图句柄, 整数型
.局部变量 位图, BITMAP
.局部变量 位图像素点阵, 字节集
.局部变量 位图文件头, BITMAPFILEHEADER
.局部变量 位图文件头字节集, 字节集
.局部变量 位图信息, BITMAPINFO
.局部变量 位图信息字节集, 字节集
.局部变量 hmemdc, 整数型
.局部变量 hbitmap, 整数型
.局部变量 holdbitmap, 整数型
_窗口取外边框 (窗口句柄, 矩形区域)
屏幕设备上下文句柄 = 取设备场景_ (0)
内存设备上下文句柄 = 创建内存场景_ (屏幕设备上下文句柄)
位图句柄 = 创建设备场景位图_ (屏幕设备上下文句柄, 矩形区域.矩形右边 - 矩形区域.矩形左边, 矩形区域.矩形底边 - 矩形区域.矩形顶边)
旧位图句柄 = 选入设备场景_ (内存设备上下文句柄, 位图句柄)
.如果真 (取反 (PrintWindow (窗口句柄, 内存设备上下文句柄, 0)))
选入设备场景_ (内存设备上下文句柄, 旧位图句柄)
删除对象_ (位图句柄)
删除设备场景_ (内存设备上下文句柄)
释放设备场景_ (0, 屏幕设备上下文句柄)
输出调试文本 (“抓取窗口位图失败”)
返回 ({ })
.如果真结束
.如果 (非客户区)
新左边 = 左边
新顶边 = 顶边
新宽度 = 宽度
新高度 = 高度
.否则
连续赋值 (0, 窗口大小.矩形宽度, 窗口大小.矩形高度, 窗口位置.x, 窗口位置.y)
_取窗口大小 (窗口句柄, 窗口大小)
_取窗口区域位置 (窗口句柄, 窗口位置)
新左边 = 窗口位置.x - 矩形区域.矩形左边 + 左边
新顶边 = 窗口位置.y - 矩形区域.矩形顶边 + 顶边
新宽度 = 选择 (宽度 < 1, 窗口大小.矩形宽度, 宽度)
新高度 = 选择 (高度 < 1, 窗口大小.矩形高度, 高度)
.如果结束
hmemdc = 创建内存场景_ (屏幕设备上下文句柄)
hbitmap = 创建设备场景位图_ (屏幕设备上下文句柄, 新宽度, 新高度)
holdbitmap = 选入设备场景_ (hmemdc, hbitmap)
复制场景位图_ (hmemdc, 0, 0, 新宽度, 新高度, 内存设备上下文句柄, 新左边, 新顶边, 13369376)
选入设备场景_ (内存设备上下文句柄, 旧位图句柄)
删除对象_ (位图句柄)
删除设备场景_ (内存设备上下文句柄)
内存设备上下文句柄 = hmemdc
位图句柄 = hbitmap
旧位图句柄 = holdbitmap
GetObjectA (位图句柄, 5 × 4 + 2 + 2, 位图)
位图信息.BITMAPINFOHEADER.biSize = 4 × 11
GetDIBits_BimapInfo (内存设备上下文句柄, 位图句柄, 0, 0, 0, 位图信息, 0)
位图像素点阵 = 取空白字节集 (位图信息.BITMAPINFOHEADER.biSizeImage)
位图信息.BITMAPINFOHEADER.biCompression = 0
GetDIBits (内存设备上下文句柄, 位图句柄, 0, 位图.bmHeight, 位图像素点阵, 位图信息, 0)
' 构造位图信息
位图信息字节集 = 取空白字节集 (位图信息.BITMAPINFOHEADER.biSize)
CopyMemory_BITMAPINFO (位图信息字节集, 位图信息, 位图信息.BITMAPINFOHEADER.biSize)
' 构造位图文件头
位图文件头.bfType = 19778
位图文件头.bfOffBits = 2 × 4 + 3 × 2 + 位图信息.BITMAPINFOHEADER.biSize
位图文件头.bfSize = 位图文件头.bfOffBits + 位图信息.BITMAPINFOHEADER.biSizeImage
位图文件头.bfReserved1 = 0
位图文件头.bfReserved2 = 0
位图文件头字节集 = 取空白字节集 (14)
CopyMemory_BITMAPFILEHEADER (位图文件头字节集, 位图文件头, 14)
选入设备场景_ (内存设备上下文句柄, 旧位图句柄)
删除对象_ (位图句柄)
删除设备场景_ (内存设备上下文句柄)
释放设备场景_ (0, 屏幕设备上下文句柄)
返回 (位图文件头字节集 + 位图信息字节集 + 位图像素点阵)

.版本 2
.DLL命令 取设备场景_, 整数型, , "GetDC", , 获取指定窗口的设备场景 指定窗口的设备场景句柄,出错则为0
.参数 hwnd, 整数型, , 将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC;
.DLL命令 创建内存场景_, 整数型, , "CreateCompatibleDC"
.参数 hdc, 整数型
.DLL命令 创建设备场景位图_, 整数型, , "CreateCompatibleBitmap"
.参数 hdc
.参数 nWidth
.参数 nHeight
.DLL命令 选入设备场景_, 整数型, , "SelectObject", , gdi32.dll每个设备场景都可能有选入其中的图形对象。其中包括位图、刷子、字体、画笔以及区域等等。一次选入设备场景的只能有一个对象。选定的对象会在设备场景的绘图操作中使用。例如,当前选定的画笔决定了在设备场景中描绘的线段颜色及样式 与以前选入设备场景的相同hObject类型的一个对象的句柄,零表示出错。如选定的对象是一个区域(Region),结果就是下列常数之一:SIMPLEREGION, ; COMPLEXREGION 或 NULLREGION 对区域进行描述, GDI_ERROR 表示出错
.参数 设备场景句柄, 整数型, , 一个设备场景的句柄
.参数 对象句柄, 整数型, , 一个画笔、位图、刷子、字体或区域的句柄;
.DLL命令 PrintWindow, 逻辑型
.参数 hwnd, 整数型
.参数 hdcBlt, 整数型
.参数 nFlags, 整数型
.DLL命令 删除对象_, 整数型, , "DeleteObject", , gdi32.dll用这个函数删除GDI对象,比如画笔、刷子、字体、位图、区域以及调色板等等。对象使用的所有系统资源都会被释放 非零表示成功,零表示失败
.参数 对象句柄, 整数型, , 一个GDI对象的句柄;
.DLL命令 删除设备场景_, 整数型, , "DeleteDC", , gdi32.dll删除专用设备场景或信息场景,释放所有相关窗口资源。不要将它用于GetDC函数取回的设备场景,执行成功则为非零,失败则为零
.参数 hdc, , , 将要删除的设备场景
.DLL命令 释放设备场景_, 整数型, , "ReleaseDC", , user32.dll释放由调用GetDC或GetWindowDC函数获取的指定设备场景。它对类或私有设备场景无效(但这样的调用不会造成损害) 执行成功为1,否则为0
.参数 窗口句柄, 整数型, , 要释放的设备场景相关的窗口句柄
.参数 设备场景, 整数型, , 要释放的设备场景句柄;
.DLL命令 复制场景位图_, 整数型, , "BitBlt", , gdi32.dll将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容 非零表示成功,零表示失败。会设置GetLastError
.参数 目标设备场景, 整数型, , 目标设备场景
.参数 目标横坐标, 整数型, , 对目标DC中目标矩形左上角位置进行描述的那个点。用目标DC的逻辑坐标表示
.参数 目标纵坐标, 整数型, , 同上
.参数 传输图像宽度, 整数型, , 欲传输图象的宽度和高度
.参数 传输图像高度, 整数型, , 同上
.参数 源设备场景, 整数型, , 源设备场景。如光栅运算未指定源,则应设为0
.参数 源横坐标, 整数型, , 对源DC中源矩形左上角位置进行描述的那个点。用源DC的逻辑坐标表示
.参数 源纵坐标, 整数型, , 同上
.参数 光栅运算方式, 整数型, , 传输过程要执行的光栅运算;
.DLL命令 GetObjectA, 整数型, , "GetObjectA"
.参数 hgdiobj
.参数 cbBuffer
.参数 lpvObject, BITMAP
.DLL命令 GetDIBits_BimapInfo, 整数型, , "GetDIBits"
.参数 HDC
.参数 hBitmap
.参数 nStartScan
.参数 nNumScans
.参数 lpBits
.参数 lpBI, BITMAPINFO
.参数 wUsage
.DLL命令 GetDIBits, 整数型, , "GetDIBits"
.参数 HDC
.参数 hBitmap
.参数 nStartScan
.参数 nNumScans
.参数 lpBits, 字节集
.参数 lpBI, BITMAPINFO
.参数 wUsage
.DLL命令 CopyMemory_BITMAPINFO, 整数型, , "RtlMoveMemory"
.参数 Destination, 字节集
.参数 Source, BITMAPINFO
.参数 Length
.DLL命令 CopyMemory_BITMAPFILEHEADER, 整数型, , "RtlMoveMemory"
.参数 Destination, 字节集
.参数 Source, BITMAPFILEHEADER
.参数 Length
.DLL命令 _取窗口大小, 整数型, , "GetClientRect", , user32.dll返回指定窗口客户区矩形的大小 (Long,非零表示成功,零表示失败。)
.参数 hwnd, 整数型, , Long,欲计算大小的目标窗口
.参数 lpRect, 矩形范围, , RECT,指定一个矩形,用客户区域的大小载入(以像素为单位)
.DLL命令 _取窗口区域位置, 整数型, , "ClientToScreen", , user32.dll非零表示成功,零表示失败
.参数 窗口句柄, 整数型, , hwnd,要取出区域坐标的窗口句柄
.参数 位置变量, 坐标型, , lpPoint,参见相关帮助
.DLL命令 _窗口取外边框, 逻辑型, , "GetWindowRect", 公开, user32.dll获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
.参数 句柄, 整数型, , Long,想获得范围矩形的那个窗口的句柄
.参数 大小, 矩形坐标, 传址, RECT,屏幕坐标中随同窗口装载的矩形(左边,顶边,右边,底边)

.版本 2
.数据类型 矩形坐标, 公开
.成员 矩形左边, 整数型
.成员 矩形顶边, 整数型
.成员 矩形右边, 整数型
.成员 矩形底边, 整数型
.数据类型 矩形范围, 公开
.成员 矩形左边, 整数型
.成员 矩形顶边, 整数型
.成员 矩形宽度, 整数型
.成员 矩形高度, 整数型
.数据类型 坐标型, 公开
.成员 x, 整数型, , , X轴坐标
.成员 y, 整数型, , , Y轴坐标
.数据类型 BITMAP
.成员 bmType
.成员 bmWidth
.成员 bmHeight
.成员 bmWidthBytes
.成员 bmPlanes, 短整数型
.成员 bmBitsPixel, 短整数型
.成员 bmBits, , 传址
.数据类型 BITMAPFILEHEADER
.成员 bfType, 短整数型
.成员 bfSize
.成员 bfReserved1, 短整数型
.成员 bfReserved2, 短整数型
.成员 bfOffBits
.数据类型 BITMAPINFOHEADER, , 设备无关位图_
.成员 biSize
.成员 biWidth
.成员 biHeight
.成员 biPlanes, 短整数型
.成员 biBitCount, 短整数型
.成员 biCompression
.成员 biSizeImage
.成员 biXPelsPerMeter
.成员 biYPelsPerMeter
.成员 biClrUsed
.成员 biClrImportant
.数据类型 BITMAPINFO
.成员 BITMAPINFOHEADER, BITMAPINFOHEADER
.成员 bmiColors, , , , RGBQUAD bmiColors[1];追问你能把源码上传到网盘么 我去下载
复制不到易语言里面追答子程序就复制子程序的,dll就复制dll的,不要一次性复制,我现在在上手机不方便跟你发了追问你在哪找的源码 我去下载
说下地址追答源码在家里的电脑内,以前找的,需要的时候一个搜索就可以找出来追问哥们 你回家把源码 上传下 谢谢了追答
全部回答
  • 1楼网友:酒者煙囻
  • 2021-03-07 11:35
快照(取鼠标所在窗口句柄(),,)追问不是这个啊 你又搞错了 看到那个验证码了么 最下面的图片 截成那样的才算合格
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯