Почему я не могу получить приложение RootVisual Of External? - PullRequest
0 голосов
/ 23 октября 2018

Я работаю над платформой автоматического тестирования в 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 не возвращается. Что здесь не так?

...