wuke_615 2023-12-20 15:41 采纳率: 50%
浏览 21
已结题

VB6使用MSAA编程时accChildCount返回异常,但Inspect点击后就正常了。

我现在使用msaa(Microsoft Active Accessibility)编程,使用过程中发现某级元素的accChildCount返回是0(Location:Width=0,Heght=0),但是它的下级是有元素的。经过InSpect测试发现必须点击一下这个节点,该节点的State就会从&H844变成&H100044。并且Name也回从Null变为有内容。此时的accChildCount返回值也正常了,可以遍历下级元素。
也就是说默认状态下是遍历到问题节点就结束,用InSpect一步一步展开元素树,当在问题节点的上级节点点击时,被展开的下级问题节点显示的State还是&H844,一旦再点击问题节点后,该节点的State就变&H100044。就遍历正常了。
各位有没有知道原因的?

问题现象与这个贴子类似,但此楼主没有说明原因。
http://bbs.csdn.net/topics/340010723
msaa编程与inspect的问题
https://bbs.csdn.net/topics/390461719

总不能配置到客户端再每次点击一下Inspect吧?付费付费!

  • 写回答

13条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-12-20 15:41
    关注

    引自强大而免费的微信小程序:皆我知道

    这个问题可能是由于两个原因引起的:

    1. MSAA可能在访问问题节点之前未完全加载完毕。在某些情况下,MSAA在实际调用之前需要一些时间来加载正确的信息。通过使用延迟加载或者等待一段时间后再访问节点,可能可以解决此问题。

    2. 这个问题可能与UI自动化树的构建方式有关。Inspect工具在点击节点时,可能会触发UI自动化树的重新构建,导致节点的状态和子节点信息更新。你可以尝试在代码中手动触发UI自动化树的更新,比如通过调用相关的UI Automation API函数来强制更新节点的状态。

    总体来说,这个问题可能与MSAA的加载和UI自动化树的更新有关。你可以尝试通过延迟加载、等待一段时间或者手动触发UI自动化树的更新来解决此问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月27日
  • 创建了问题 12月20日