如何捕获所有浏览器的选项卡

问题描述 投票:0回答:1

目前我制作了一个工具来捕获所有浏览器选项卡的图像(IE,Firefox,...)。

我通过以下步骤开始使用 IE 浏览器:

  1. 通过EnumWindows()扫描所有句柄。
  2. 通过GetClassName()获取每个句柄的类名,与“Internet Explorer”进行比较,得到IE句柄。
  3. 通过 EnumChildWindows()获取所有选项卡句柄。
  4. 使用 BitBlt()PrintWindow() 将句柄捕获到 .bmp 文件中。

我遇到了一些问题:

1。无法捕获非活动选项卡(尽管有单独的页面,但它与活动选项卡具有相同的图像)

2。最小化时无法捕捉

问题:对于这些问题您能给我一些建议吗?

P/S:其他信息:

  • Window 7 64 位,Aero 主题
  • MS Visual Studio 2012
  • IE 11

非常感谢!

c++ windows winapi browser
1个回答
0
投票

您可以使用Microsoft UI自动化框架。它是 Microsoft MSAA 的后继者。

Windows SDK 中的inspect.exe 应用程序就是一个示例应用程序。

如果您打开inspect.exe应用程序,然后单击地址栏,它将读出文本字段的地址。

UI 自动化使用客户端/提供商架构。所以应用程序必须支持它。现在所有主流浏览器或 ui 库都支持这种技术。

它也适用于隐藏/非活动/最大化窗口。它可以遍历所有打开的 Chrome Windows/Chrome 选项卡,无论它们是否处于非活动状态。

在这里您可以找到官方示例和官方文档。 https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-howto-walk-uiautomation-tree

可以在此处找到这些客户端/服务器应用程序的完整示例:https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/UIAutomationDocumentClient

© www.soinside.com 2019 - 2024. All rights reserved.