私は WPF で自動テスト フレームワークに取り組んでいます。基本的な WPF 自動化フレームワークを使用してほとんどのことを自動化することは可能ですが、UI レベルで何が起こっているかを詳細に把握することは非常に困難です。DataContext のプロパティやコントロールのプロパティなどを確認できる必要があります。スヌープができるから、これが可能であることを私は知っています。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;
}
コードは最後の 2 行目まで機能します。最後から 2 番目の行は null を返しますが、その理由がわかりません。windowHandle は返されますが、HwndSource は返されません。ここで何がうまくいかないのですか?