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

Windows UI Automation: click tray icon button

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

一切正常,但当应用程序单击名称为 "Dropbox" 的按钮时,它确实单击了 另一个名称为 "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 个显示器。 我已经在另一台电脑上测试过 win7 和 1 显示器 - 它有效。

更新。

我 运行 我的应用程序在 3 台具有不同 DPI 设置的机器上。在所有这些机器上,我都安装了目标应用程序。当然,图标位置不应该相同,但似乎我的应用程序中的托盘 button.Invoke 不起作用的原因是:在 DPI 的情况下!=100%

有结果:

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

点击=1741,x=1000

应用程序:
边界矩形:l:1741 t:1000,宽度=40,高度=40

Inspector.exe: 边界矩形:{l:1741 t:1000 r:1781 b:1040}

2.150% - 我的应用无法运行

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

Inspector.exe: 边界矩形:{l:3606 t:2040 r:3666 b:2100}

3.175% - 我的应用无法运行

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

Inspector.exe: 边界矩形:{l:3460 t:2020 r:3530 b:2090}

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

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

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