woodyy 2023-04-12 18:48 采纳率: 50%
浏览 62
已结题

c#的uiautomation中关于tooltip的元素的捕获?

需要做pc的自动化操作。

一个winform的软件,鼠标悬停到某个表格的单元格上,有个tooltip,我需要捕获那个tootip的文字信息。
如图“被引用文件中的问题”这样的字样。
https://learn.microsoft.com/zh-cn/dotnet/framework/ui-automation/ui-automation-support-for-the-tooltip-control-type
网上的资料很少,只有这一篇,也没好到解决方案。
谢谢!

img

  • 写回答

5条回答 默认 最新

  • 「已注销」 2023-04-12 19:12
    关注

    引用new bing部分回答作答:
    在 C# 的 UIAutomation 中,要获取 Tooltip 的文字信息,可以通过以下步骤:

    1 首先使用 UIAutomation 查找到对应的表格单元格元素。可以使用 FindFirst() 或 FindAll() 方法,通过元素的 Name、AutomationId、ClassName、ControlType 等属性进行查找。例如:

    var tableCell = window.FindFirst(TreeScope.Descendants,
        new PropertyCondition(AutomationElement.NameProperty, "单元格名称"));
    

    2 一旦找到了表格单元格元素,可以使用 GetUpdatedCacheRequest() 方法来获取当前 UIAutomation 缓存中的元素信息。例如:

    var cacheRequest = new CacheRequest();
    cacheRequest.Add(AutomationElement.NameProperty);
    cacheRequest.Add(ValuePattern.ValueProperty);
    cacheRequest.Add(ValuePattern.IsReadOnlyProperty);
    cacheRequest.Add(ValuePattern.IsPasswordProperty);
    cacheRequest.TreeScope = TreeScope.Element | TreeScope.Descendants;
    cacheRequest.AutomationElementMode = AutomationElementMode.Full;
    var cachedElement = Automation.Cached.GetUpdatedCacheRequest(cacheRequest).FindFirst(
        TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, "单元格名称"));
    

    3 如果表格单元格上有 Tooltip,可以使用 AutomationElement.ToolTipOpenedEvent 和 AutomationElement.ToolTipClosedEvent 事件来检测 Tooltip 的打开和关闭。例如:

    var tooltip = Automation.AddAutomationEventHandler(
        AutomationElement.ToolTipOpenedEvent, tableCell, TreeScope.Element, (sender, e) =>
    {
        // 在此处获取 Tooltip 的信息
    });
    

    4 在 tooltip 事件处理程序中,可以使用 e.SourceElement 属性来获取打开 Tooltip 的元素。可以使用 GetUpdatedCacheRequest() 方法来获取 Tooltip 元素的缓存信息。例如:

    var tooltipElement = e.SourceElement.GetUpdatedCacheRequest(cacheRequest);
    var tooltipText = tooltipElement.GetCurrentPropertyValue(ValuePattern.ValueProperty) as string;
    

    为了确保能够正确捕获 Tooltip 的信息,需要在代码中加入适当的延时或等待操作,以确保 Tooltip 已经完全打开并加载了其内容。

    评论

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么