【发布时间】:2016-08-18 11:10:15
【问题描述】:
我想找到并单击托盘图标按钮 (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 设置的机器上运行了我的应用程序。在所有这些机器上,我都安装了目标应用程序。自然,图标位置不应该相同,但似乎我是托盘按钮的原因。在我的应用程序中调用不起作用:在 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,Width=60,Height=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设置的任何情况下如何点击图标?
【问题讨论】:
标签: c# wpf ui-automation trayicon