为什么无法获得外部应用程序的RootVisual?

时间:2018-10-22 21:53:55

标签: c# wpf automation hwnd visual-tree

我正在WPF中开发一个自动化测试框架。我发现,虽然可以使用基本的WPF自动化框架自动执行大多数操作,但要深入了解UI级别正在发生的事情的细节是非常困难的。我需要能够看到诸如DataContext的属性,控件的属性等内容。我知道这是可能的,因为Snoop可以做到。 Snoop允许您遍历任何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;
}

代码工作到最后第二行。最后第二行返回null,但我不知道为什么。返回windowHandle,但不返回HwndSource。 这是怎么回事?

0 个答案:

没有答案