Я бы хотел найти и щелкнуть значок значка в трее (Windows 10). Помощники заладились здесь: https://blogs.msdn.microsoft.com/oldnewthing/20141013-00/?p=43863Windows UI Automation: кнопка значка на панели задач
Все работает нормально, но когда приложение кнопку нажмет с именем «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 монитора. Я тестировал на другом компьютере winth win7 и 1 монитор - он работает.
Обновление.
Я выполнил мое приложение на трех машинах с различными настройками DPI. На всех этих машинах я установил целевое приложение. Естественно, расположение значка не должно быть таким же, но я, кажется, по той причине, почему лоток button.Invoke в моем приложении не работает: что в случае DPI = 100%
Есть результаты:
1.100% - мое приложение работает нормально.
Нажмите = 1741 х = 1000
App:
BoundingRectangle: л: 1 741 т: 1000, ширина = 40, высота = 40
Inspector.exe: BoundingRectangle: {л: 1 741 т: 1000 г: 1781 б: 1040}
2.150% - мое приложение не работает
App: BoundingRectangle: Х = 2464, Y = 1400, ширина = 60, высота = 60
Inspector.exe: BoundingRectangle: {л: 3606 т: 2040 г: 3666 б: 2100}
3,175% - мое приложение не работает
App: BoundingRectangle: л: 1977, т : 1214, ширина = 70, высота = 70
Inspector.exe: BoundingRectangle: {л: 3460 т: 2020 г: 3530 б: 2090}
Как решить исходную задачу: как нажать значок в любом случае настроек DPI?