C#通过UI Automation 获取QQ聊天窗口的聊天记录的疑问

时间:2022-12-20 16:37:11
如图所示,通过inspect.exe可以找的到QQ聊天记录,
  C#通过UI Automation 获取QQ聊天窗口的聊天记录的疑问
1:聊天窗口消息区,AutomationElement的Name值为“消息”;
2:此处是聊天记录内容。
C#程序中可找到外层聊天窗口的AutomationElement对象,但通过该对象找不到消息区


AutomationElement aeTop = AutomationElement.RootElement;   //找到桌面根元素 
AutomationElement aeForm = aeTop.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "XXXX交流群"));   //找到XXXX交流群的聊天窗口
AutomationElement aeMessage= aeForm .FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, "消息"));   //找不到消息区,aeMessage值为空

通过AutomationElement的两个静态方法(1.通过指定点找到AutomationElement;2.通过当前获得焦点找到AutomationElement)也不能获取到消息区的AutomationElement对象,结果获得了聊天窗口的AutomationElement对象
注:两个方法的指定点和当前焦点都已经指向消息区位置了。

AutomationElement focusedElement = AutomationElement.FocusedElement;  //获取当前焦点AutomationElement元素 
AutomationElement pointElement= AutomationElement.FromPoint(new System.Windows.Point(868, 346)); //获取指定点处AutomationElement元素 

本人认为应该是TX对其做了保护限制,不知道该如何解决 。有没有做过类似开发的大神指点一下小弟。

5 个解决方案

#1


对象有此方法,就说明是可用的(不然写此方法是吃撑着不成?),只是用得不对罢了

#2


如果用IAccessable接口是可以取到qq窗口的聊天记录的
只不过只能取到整个聊天窗口的全部内容

#3


引用 2 楼 stherix 的回复:
如果用IAccessable接口是可以取到qq窗口的聊天记录的
只不过只能取到整个聊天窗口的全部内容
很感兴趣,能指点下吗?

#4


激活窗体,模拟按键tab,定位到消息区,模拟按键全选,复制,搞定。

#5


马克,好感兴趣的话题,大神们多指点下。

#1


对象有此方法,就说明是可用的(不然写此方法是吃撑着不成?),只是用得不对罢了

#2


如果用IAccessable接口是可以取到qq窗口的聊天记录的
只不过只能取到整个聊天窗口的全部内容

#3


引用 2 楼 stherix 的回复:
如果用IAccessable接口是可以取到qq窗口的聊天记录的
只不过只能取到整个聊天窗口的全部内容
很感兴趣,能指点下吗?

#4


激活窗体,模拟按键tab,定位到消息区,模拟按键全选,复制,搞定。

#5


马克,好感兴趣的话题,大神们多指点下。