Windows UI自动化:单击托盘图标按钮

时间:2016-08-18 11:10:15

标签: c# wpf ui-automation trayicon

我想找到并点击托盘图标按钮(Windows 10)。 帮手是从这里带来的: https://blogs.msdn.microsoft.com/oldnewthing/20141013-00/?p=43863

一切正常,但是当应用程序点击名称为" Dropbox"真的是点击了 另一个名为&#34的按钮; OneDrive"也在托盘区域:

    foreach (var icon in EnumNotificationIcons())
    {
        var name = icon.GetCurrentPropertyValue(AutomationElement.NameProperty) as string;
        Console.WriteLine(name);
        if (name.StartsWith("Dropbox"))
        {
            Console.WriteLine(@"Click!");
            icon.InvokeButton();
            break;
        }
    }

有什么问题?

本机有2台显示器。 我已经测试了另一台电脑winth win7和1台显示器 - 它有效。

更新

我已在3台具有不同DPI设置的计算机上运行我的应用程序。在所有这些机器上我安装了目标应用程序。当然,图标位置不应该相同,但似乎我之所以托盘按钮。我的应用程序中的内容不起作用:在DPI的情况下!= 100%

有结果:

1.100% - 我的应用运行正常。

点击= 1741,x = 1000

应用:
BoundingRectangle:l:1741 t:1000,Width = 40,Height = 40

Inspector.exe: BoundingRectangle:{l:1741 t:1000 r:1781 b:1040}

2.150% - 我的应用无效

应用: BoundingRectangle:X = 2464,Y = 1400,宽度= 60,高度= 60

Inspector.exe: BoundingRectangle:{l:3606 t:2040 r:3666 b:2100}

3.175% - 我的应用不起作用

应用: BoundingRectangle:l:1977,t:1214,Width = 70,Height = 70

Inspector.exe: BoundingRectangle:{l:3460 t:2020 r:3530 b:2090}

如何解决原始任务:如何在任何DPI设置情况下单击图标?

1 个答案:

答案 0 :(得分:1)

解决了,答案就在这里:原因是DPI。 如果DPI!= 96,UI自动化工作不正确。 需要添加清单代码或应用代码,如此处所述

How to configure an app to run correctly on a machine with a high DPI setting (e.g. 150%)?