开源
功能说明:该程序是一个基于易语言开发的桌面截图工具,主要功能是实现全屏截图以及对指定窗口的截图,并将截图结果实时显示在程序界面的画板控件上。程序通过调用 Windows 系统的 GDI 及相关 API 函数来完成底层的图像捕获、内存处理与显示操作。
主要功能模块分析如下:
1. 全屏截图功能(对应子程序 _按钮 1_被单击):
当用户点击按钮 1 时,程序执行全屏捕获流程。首先将启动窗口设置为不可视,以防止截图内容中包含程序自身界面。随后获取屏幕设备句柄及设备场景,创建兼容的内存场景和位图,位图大小匹配当前屏幕分辨率。利用 BitBlt 函数将整个屏幕的内容复制到位图中。完成捕获后,程序重新显示自身窗口,并将内存中的位图通过 StretchBlt 函数拉伸复制到界面上的“画板 1"控件中进行展示。最后清理释放相关的 GDI 对象资源,包括位图对象和设备场景句柄。
2. 获取窗口句柄辅助功能(对应子程序 _按钮 3_被单击):
为了方便用户截取特定窗口,该功能提供了一个辅助机制。点击按钮 3 后,程序弹出信息框提示用户切换到目标窗口,并有 3 秒的时限。在此期间程序隐藏自身,3 秒延时结束后,自动获取当前前台窗口的句柄及标题,并将其填入“编辑框 2"和“标签 3"中,供后续截图功能使用。完成后恢复窗口显示。
3. 指定窗口截图功能(对应子程序 _按钮 2_被单击):
该功能依赖“编辑框 2"中填入的窗口句柄。点击按钮 2 后,程序会检查句柄是否为空。若有效,则转换为数值型句柄,获取该窗口的客户区矩形大小以确定截图宽高。接着创建对应的内存场景和位图,核心步骤是调用 PrintWindow API 函数将指定窗口的图像绘制到内存位图中。随后同样将捕获的位图复制并显示在“画板 1"上,操作完成后释放资源并提示截取成功。
技术实现细节:
程序大量使用了 Windows DLL 命令来实现图形处理,包括但不限于:
- user32.dll 中的 GetDesktopWindow 用于获取桌面窗口句柄。
- gdi32.dll 中的 CreateCompatibleDC 用于创建兼容设备场景。
- gdi32.dll 中的 CreateCompatibleBitmap 用于创建兼容位图。
- gdi32.dll 中的 BitBlt 用于屏幕位图的快速复制。
- gdi32.dll 中的 StretchBlt 用于位图的伸缩复制,以适应画板控件的大小。
- 代码中直接调用了 PrintWindow 函数用于捕获特定窗口内容。
此外,程序还涉及设备场景的选取(SelectObject)、释放(ReleaseDC)以及对象删除(DeleteObject)等资源管理操作,确保内存泄漏最小化。
界面交互:
程序界面主要包含三个按钮(分别对应全屏截图、指定窗口截图、获取句柄)、一个画板控件(用于显示截图结果)、一个编辑框(用于输入或显示窗口句柄)以及一个标签(用于显示窗口标题)。启动窗口在截图过程中会自动隐藏以避免干扰画面,截图完成后恢复显示。
总结:
这是一个典型的易语言 GDI 截图演示程序,涵盖了全屏捕获和窗口捕获两种常见场景,展示了如何通过 API 调用操作设备上下文(DC)和位图对象,适合用于学习易语言调用系统 API 进行图形处理的基础逻辑。
======窗口程序集1
| |
| |------ _按钮1_被单击
| |
| |------ _按钮3_被单击
| |
| |------ _按钮2_被单击
| |
| |
======调用的Dll
| |
| |---[dll]------ 复制场景位图_
| |
| |---[dll]------ 取屏幕句柄_
| |
| |---[dll]------ 取设备场景信息_
| |
| |---[dll]------ 创建内存场景_
| |
| |---[dll]------ 创建设备位图_
| |
| |---[dll]------ 选入设备场景_
| |
| |---[dll]------ 复制位图_
| |
| |---[dll]------ 取设备场景_
| |
| |---[dll]------ 置伸缩模式_
| |
| |---[dll]------ 删除对象_
| |
| |---[dll]------ 释放设备场景_
| |
| |---[dll]------ 删除设备场景_
| |
| |---[dll]------ 取客户区矩形_
| |
| |---[dll]------ 取前台窗口_
| |
| |---[dll]------ 取全局场景
| |
| |---[dll]------ printwindow
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。