微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

辅助功能C# 中的 AccessibleObject不读取屏幕文本

如何解决辅助功能C# 中的 AccessibleObject不读取屏幕文本

我编写了一个程序,可以从 QQ 信使中的屏幕捕获消息。我用它来将消息存储在我的本地数据库中。

Recent messages

在此 Messenger 的早期版本 - 9.0 及以下版本中,所有消息都是通过使用以下代码在 C# 中使用 AccessibleObject 从屏幕读取来获取的。

AccessibleObject historyAO = ao.FindDescendant(c =>
               c.Role == AccessibleRole.Text &&
               c.State == AccessibleStates.ReadOnly &&
               c.Value != c.Description &&
               (c.Depth >= 9 && c.Depth <= 13) &&
               !String.IsNullOrEmpty(c.Value) &&
               c.Value.IndexOf(':') != -1,true);

historyAO.Value 包含所有消息,我可以轻松获取消息并存储在数据库中。

在当前版本的QQ(9.4及以上版本)中,自动化的树格式发生了变化,消息以列表项的形式列在列表中,如下所示(从Inspect应用程序中看到)。

Inspect elements list items

如上所示,在检查应用程序中看不到最近的消息(例如 testing123、testing234 及更高版本)。另外,我将代码更改为:

AccessibleObject historyAO = ao.FindDescendant(c =>
                c.Role == AccessibleRole.List,true);                                             
            

historyAO 中的列表项与Inspect app 中看到的相同,不包含最近的消息。但是,当我将鼠标悬停在任何消息中时,我可以通过检查看到它。

Recent message

但是,我无法通过使用上面的 C# 代码获取它。有没有其他方法可以通过 C# AccessibleObject 获取最近的消息?有没有办法通过我的代码使用鼠标悬停属性获取 AccessibleObject?请帮帮我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。