我正在用C#开发一个应用程序,并想知道当我们只知道它的窗口句柄时如何获取任何窗口的屏幕截图。我试图实现的功能是只能复制任何窗口的屏幕截图(它可以是整个应用程序或应用程序内的控件),当我只知道它的窗口句柄。
示例:我正在运行计算器应用程序和Spy ++。当我使用Spy ++的查找窗口功能并将鼠标悬停在计算器的不同按钮上时,它会显示不同的窗口句柄。让我们说我将鼠标悬停在计算器中的“9”按钮上。现在我知道它的窗口句柄,我只想获得“9”按钮的图像。如果我有完整应用程序的窗口句柄,那么我希望能够只获得该应用程序的屏幕截图。与Alt + PrintScr类似。
答案 0 :(得分:1)
您需要使用GetWindowRect。
就像this example中所示。
然后您可以使用Graphics.CopyFromScreen,如此SO帖c# Take a screenshot of specific area所示。
全部放在一起,你调用GetWindowRect,它接受一个HWnd来获取你想要的窗口的矩形。然后使用CopyFromScreen的那些rect值来捕获图像。