ScreenTool






4.73/5 (13投票s)
屏幕截图工具。

引言
该程序以多种方式截取屏幕截图。 编写它的目的是为了帮助技术文档编写者。
- 将屏幕截图保存为 jpeg 格式,保存到目标目录,并具有可配置的文件后缀。
- 允许用户通过在屏幕上的任何地方绘制橡皮筋来截取屏幕截图。
- 允许用户选择任何窗口并截取屏幕截图(类似 Spy++ 的窗口选择)。
- 拦截打印屏幕键和 Alt+打印屏幕键。
背景
这个应用程序最初是应一位程序员同事的要求而开发的,目的是找出在桌面上绘制橡皮筋并截取绘制框中区域的屏幕截图的最佳方法。 在尝试了各种技术来实现这一点之后,我最终使用了低级鼠标钩子方法 (SetWindowsHookEx(WH_MOUSE_LL,...)
。 我的同事后来被其他工作淹没了。 我决定在自己的时间里将这个测试项目变成一个有用的工具。
Using the Code
使用该应用程序非常简单。 有两种主要方法可以选择区域/窗口并截取屏幕截图。 要绘制橡皮筋,请按“绘制”按钮;要使用 Spy++ 样式的窗口选择器方法,请按“选择”按钮。 在主对话框中,有可配置的参数,例如在绘制/选择时使用的线条宽度。 输出目录是可配置的,还有一个文件前缀。 您可以从加载了所有 GDI+ 支持的图像格式的组合框中选择输出图像格式。 所有输出文件都使用前缀和日期/时间戳在目标目录中创建。 您还可以选择在绘制/选择时是否将应用程序最小化到系统托盘。 所有参数都从注册表中存储/加载。
该应用程序是使用 VS2003 (MFC7) 编写的。 您将在 "MainDlg.cpp" 文件中找到大部分代码。 该代码演示了以下 Win32 函数的用法
-
SetWindowsHookEx(WH_MOUSE_LL, ...
-
SetWindowsHookEx(WH_KEYBOARD_LL, ...
-
CreateDIBSection(...
-
SHGetSpecialFolderLocation(hWnd, CSIDL_DESKTOP, ...
-
Shell_NotifyIcon(...
-
SHBrowseForFolder(...
关注点
橡皮筋绘制代码取自/修改自 MFC CDockContext
类
CDockContext::DrawFocusRect(BOOL bRemoveRect)
已知问题
当保存为 GIF 格式时,我注意到图像质量不是很好。 我认为可以通过在 CMainDlg::SaveImageAs()
函数中调用 Image->Save()
时使用 GDI+ EncoderParameters
对象来修复这个问题。 可以在未使用的(注释掉)函数 CMainDlg::SaveImageAsJpeg()
中找到一个示例。
历史
- 2012-06-23 - 文件版本 1.0.0.2
- 添加了图像类型组合框
- 更改了橡皮筋图像选择操作,以消除 此处 所述方法中桌面图标和各种应用程序的问题。
- 2011-10-21 - 文件版本 1.0.0.1
- 初始 CodeProject 发布