0

好的,谁能解释一下Jing是如何用那个叠加的形式截屏的?它似乎需要全屏截图并记录所有可见的窗口句柄,并让您在表单中选择特定的 hwnd。可能是真的吗?如果是,实现这一目标的主要步骤是什么?可能是一个简单的图片框或没有自定义控件我没有机会在截屏时冻结屏幕?

谢谢!

4

1 回答 1

1

我对 Jing 不太熟悉,无法确切知道它的用途。但是有两种基本技术。一个是正​​如您提到的,捕获屏幕并以最顶部的无边框形式显示它。Vista/Win7 截图工具就是这样工作的。您将在我在此线程中的回答中找到启动它所需的代码。

另一个可能更可能被 Jing 使用,类似于 Spy++ 所做的,允许用户移动鼠标并在窗口周围绘制一个选择矩形。它的优点是它可以在您运行该工具时处理窗口大小调整或消失。您可以通过使用屏幕大小的最顶层窗体来实现它,该窗体的 TransparencyKey 属性设置为 BackColor 的值。紫红色是一种流行的选择。您可以使用 OnPaint() 方法在此表单上绘图,绘图出现在所有窗口的顶部。您需要一些 P/Invoke (GetWindow) 以按 Z 顺序迭代底层窗口,以了解用户指向哪个窗口。GetWindowRect() 获取窗口矩形。加上一些麻烦来处理关于边框大小的 Aero。

您可以在我在此线程中的回答中找到示例代码以帮助您开始使用该技术。

于 2010-07-14T13:51:23.617 回答