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%)?
我想找到并单击托盘图标按钮 (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%)?