Ознакомьтесь с AutomationElement.FromPoint () , который является частью автоматизации пользовательского интерфейса - этот набор API часто используется приложениями автоматического тестирования и специальных возможностей, которые хотят получить информацию об интерфейсе других процессов. Для приложений, которые его поддерживают (большая часть пользовательского интерфейса в Windows и большинство приложений MS), вы можете получить информацию об элементе пользовательского интерфейса, а не только о внешнем окне. В этом примере приложения выводится имя и тип (например, «кнопка») элемента под курсором.
Это не поддерживается везде, может не работать во многих приложениях не от MS (хотя поддерживается Firefox); но, по крайней мере, даст вам лучшие результаты, чем WindowFromPoint и т. д.
// Compile using: csc ItemAtPoint.cs /r:UIAutomationClient.dll /r:WindowsBase.dll
using System;
using System.Windows.Automation;
using System.Windows.Forms;
class ItemAtPoint
{
public static void Main()
{
Console.WriteLine("Place pointer over item and hit return...");
Console.ReadLine();
// Get the AutomationElement that represents the window handle...
System.Windows.Point point = new System.Windows.Point(Cursor.Position.X, Cursor.Position.Y);
AutomationElement el = AutomationElement.FromPoint(point);
// Print out the type of the item and its name
Console.WriteLine("item is a \"{0}\" with name \"{1}\"", el.Current.LocalizedControlType, el.Current.Name);
}
}