Я работаю над платформой автоматического тестирования в WPF.Я обнаружил, что, хотя большинство вещей можно автоматизировать с помощью базовой инфраструктуры автоматизации WPF, очень трудно получить подробную информацию о том, что происходит на уровне пользовательского интерфейса.Мне нужно иметь возможность видеть такие вещи, как свойства DataContext, свойства элементов управления и так далее.Я знаю, что это возможно, потому что Снуп может это сделать.Snoop позволяет вам пройти по всему Visual Tree любого приложения WPF.Мне нужен этот функционал.Итак, я написал этот код:
public async Visual GetAppRootVisual()
{
var allProcesses = Process.GetProcesses();
var filteredProcess = allProcesses.Where(p => p.ProcessName.Contains(ProcessSearchText)).First();
var windowHandle = filteredProcess.MainWindowHandle;
var hwndSource = HwndSource.FromHwnd(windowHandle);
return hwndSource.RootVisual;
}
Код работает до второй последней строки.Вторая последняя строка возвращает ноль, но я не могу понять, почему.WindowHandle возвращается, но HwndSource не возвращается. Что здесь не так?