65.9K
CodeProject 正在变化。 阅读更多。
Home

ScreenTool

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.73/5 (13投票s)

2011年10月21日

CPOL

2分钟阅读

viewsIcon

59190

downloadIcon

4886

屏幕截图工具。

引言

这个程序可以通过多种方式截取屏幕。它被编写出来是为了帮助技术文档编写人员。

  • 将截图保存为 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 初始发布 
© . All rights reserved.