Я пытаюсь использовать библиотеку uiautomationClient в .net, чтобы получить элемент под курсором мыши с использованием elementFrompoint (). Это работает в целом, но когда я нажимаю на любые элементы на слайдах PowerPoint, я могу получить только элемент внешнего панели, а не глубоко вложенные элементы. < /P>
Однако, если я открываю insights.exe < /strong> для Windows в заднем плане, он может получить вложенный элемент (ChistryPe ControlPe является Image), и вдруг мой код также может увидеть, что элементы, которые можно увидеть, не вдруг. Здесь "src =" https://i.sstatic.net/j897ptfd.png "/>
Вот мой код:
public static IUIAutomationElement getElementFromCursor(int x, int y) {
CursorPoint cp = new CursorPoint(x, y);
GetPhysicalCursorPos(ref cp);
System.Windows.Point point = new System.Windows.Point(cp.X, cp.Y);
IUIAutomationElement element = null;
tagPOINT p = new tagPOINT();
p.x = (int)point.X;
p.y = (int)point.Y;
try {
element = cui.ElementFromPoint(p);
} catch (COMException) {
return null;
} catch (TimeoutException) {
} catch (Exception) {
}
return FindDeepestContainingPoint(cui, element, p);
}
private static IUIAutomationElement FindDeepestContainingPoint(CUIAutomation cui, IUIAutomationElement element, tagPOINT pt) {
IUIAutomationTreeWalker walker = cui.RawViewWalker;
IUIAutomationElement child = walker.GetFirstChildElement(element);
IUIAutomationElement result = null;
while (child != null) {
double left, top, width, height;
left = child.CurrentBoundingRectangle.left;
top = child.CurrentBoundingRectangle.top;
width = child.CurrentBoundingRectangle.right - child.CurrentBoundingRectangle.left;
height = child.CurrentBoundingRectangle.bottom - child.CurrentBoundingRectangle.top;
if (PointInRect(pt, left, top, width, height)) {
result = FindDeepestContainingPoint(cui, child, pt);
if (result != null)
return result;
}
child = walker.GetNextSiblingElement(child);
}
return element;
}
< /code>
Это заставляет меня думать, что доступность каким -то образом заставляет Powerpoint раскрыть больше своего дерева Uiautomation. Есть ли что -то, что делает Insights Insights (например, инициализация событий или «пробуждение» дерева UIAutomation), которое я могу воспроизвести в своем собственном коде, чтобы получить доступ к тому же уровню детализации?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... with-acces