gpt4 book ai didi

winapi - Microsoft Active Accessibility 在枚举控件时 super 慢。帮助!

转载 作者:行者123 更新时间:2023-12-05 05:29:14 27 4
gpt4 key购买 nike

我正在使用主动辅助功能框架来枚举给定程序的所有控件。问题是,当我遍历控件树时,它会在资源管理器或 visual studio 等复杂应用程序上花费很长时间。简单的应用程序大约需要 1 秒,但具有大量控件的大型应用程序可能需要 10 秒。有人经历过吗?我还找到了一些关于在进程内与进程外使用 MSAA 的引用资料。这是什么意思?

最佳答案

首先,递归遍历时要小心,因为有时会发生“树”中存在“循环”的情况,你不能真正可靠地比较对象,看看你是否已经到了这个对象...

Active Accessibility 如此缓慢的主要原因是,它不被认为是递归遍历的,而只是显示有关单个元素(光标下方)或其子元素的详细信息。每个 AA 请求(针对每个属性)都必须将上下文切换到目标应用程序并再次返回。而且,如果您正确地执行了 AA(所有 UI 对象都附有大量描述),那么只有几千个对象需要时间来遍历...

如果您正在寻找特定的东西,直接请求可能更容易,而不是遍历所有控件。或者,如果您只是在寻找某些类型的对象,这些对象只出现在具有您知道的其他属性的 HWND 中,那么首先枚举所有 HWND 然后对它们调用 AccessibleObjectFromWindow 会快得多(这不会仅适用于顶层窗口,也适用于子窗口)。在枚举他们的 child 时,您可以在 HWND 属性发生变化时立即停止。

并为递归深度添加一些硬最大计数器,以避免遇到其中一个循环。

关于winapi - Microsoft Active Accessibility 在枚举控件时 super 慢。帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/949765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com