c# - 当我们只知道窗口句柄时如何获取窗口图像

标签 c# screenshot window-handles

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

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

最佳答案

您需要使用 GetWindowRect .

就像this example中显示的一样.

然后你可以使用Graphics.CopyFromScreen如本 SO 帖子所示 c# Take a screenshot of specific area .

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

关于c# - 当我们只知道窗口句柄时如何获取窗口图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22540601/

相关文章:

c# - log4net 记录所有未处理的应用程序错误

java - 将 HWND 从 Java 程序传递到 C 库

ui-automation - GUI自动化测试-窗口句柄问题

google-chrome - 从扩展内获取 Chrome 选项卡的窗口句柄?

c# - 如何将 int[] 转换为 short[]?

c# - F# 中的接口(interface)对象语法

c# - 为什么这个 if/then 语句返回 true?

c - 使用C程序在Windows中截图并另存为PNG文件

c++ - 从另一个桌面捕获屏幕截图

upload - Google 开发者屏幕截图(图形 Assets )错误图像无效