ScreenTool






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

引言
这个程序可以通过多种方式截取屏幕。它被编写出来是为了帮助技术文档编写人员。
- 将截图保存为 JPEG 格式到目标目录,文件后缀可配置。
- 允许用户在屏幕上的任何位置绘制一个矩形框来截取屏幕。
- 允许用户选择任何窗口并截取屏幕(类似于 Spy++ 风格的窗口选择)。
- 拦截 PrintScreen 键和 Alt+PrintScreen 键。
背景
这个应用程序最初是另一个程序员的要求,目的是找出在桌面上绘制矩形框并截取该区域内屏幕的最佳方法。在尝试了各种技术后,我最终使用了低级鼠标钩子方法 (SetWindowsHookEx(WH_MOUSE_LL,...)
。我的同事随后被其他工作淹没。我决定将这个测试项目在业余时间变成一个有用的工具。
Using the Code
使用这个应用程序非常简单。有两种主要方法来选择区域/窗口并截取屏幕。要绘制矩形框,请按“Draw”按钮;要使用 Spy++ 风格的窗口选择器方法,请按“Select”按钮。在主对话框中,有可配置的参数,例如绘制/选择时使用的线条宽度。输出目录是可配置的,以及文件前缀。您可以从加载了所有 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 时,我注意到图像质量不是最好的。我相信这可以通过在使用 Image->Save()
函数时使用 GDI+ EncoderParameters
对象来解决,在 CMainDlg::SaveImageAs()
函数中。一个例子可以在下面的未使用的(注释掉的)函数 CMainDlg::SaveImageAsJpeg()
中找到。
历史
- 2012-06-23 - 文件版本 1.0.0.2
- 添加了图像类型组合框
- 更改了矩形框图像选择操作,以消除桌面图标和各种应用程序中出现的问题,方法如 此处 描述的那样。
- 2011-10-21 - 文件版本 1.0.0.1
- CodeProject 初始发布