2

我正在用 C# 开发一个应用程序,并且想知道当我们只知道它的窗口句柄时如何获取任何窗口的屏幕截图图像。我想要实现的功能是当我只知道它的窗口句柄时,能够只复制任何窗口的屏幕截图(它可以是整个应用程序或应用程序内的控件)。

示例:我正在运行一个计算器应用程序和 Spy++。当我使用 Spy++ 的查找窗口功能并将鼠标悬停在计算器的不同按钮上时,它会显示不同的窗口句柄。假设我将鼠标悬停在计算器中的“9”按钮上。现在我知道它的窗口句柄,我只想获取“9”按钮的图像。如果我有完整应用程序的窗口句柄,那么我希望能够仅获取该应用程序的屏幕截图。类似于 Alt+PrintScr。

4

1 回答 1

1

您需要使用GetWindowRect

就像本例所示。

然后,您可以使用Graphics.CopyFromScreen,如this SO post c# Take a screenshot of specific area所示。

把它们放在一起,你调用 GetWindowRect,它接受一个 HWnd 来获取你想要的窗口的矩形。然后,您将这些 rect 值与 CopyFromScreen 一起使用来捕获您的图像。

于 2014-03-20T17:33:12.457 回答