跨AppDomain访问父WPF窗口

跨AppDomain访问父WPF窗口,wpf,winapi,appdomain,Wpf,Winapi,Appdomain,我正在为SCVMM(System center for Hyper-V)开发一个加载项,它是一个WPF应用程序,允许用户开发加载项并将其WPF UI(用户控件)托管在SCVMM中。它使用Microsoft插件和扩展性框架 我正在尝试访问父窗口实例,即承载外接程序的主SCVMM窗口。我已经搜索了这个主题,每个人都说不可能跨应用程序域这样做 我能够获得窗口的句柄,但当我试图将其转换为窗口时,我得到null HwndSource source = (HwndSource)HwndSource

我正在为SCVMM(System center for Hyper-V)开发一个加载项,它是一个WPF应用程序,允许用户开发加载项并将其WPF UI(用户控件)托管在SCVMM中。它使用Microsoft插件和扩展性框架

我正在尝试访问父窗口实例,即承载外接程序的主SCVMM窗口。我已经搜索了这个主题,每个人都说不可能跨应用程序域这样做

我能够获得窗口的句柄,但当我试图将其转换为窗口时,我得到null

     HwndSource source = (HwndSource)HwndSource.FromVisual(this.btn);
     IntPtr handle2 = source.Handle;

     Window w = source.RootVisual as Window;

我有两个问题。1) 您确定您真的需要窗口,而句柄对于您的目的来说是不够的(您将如何处理窗口)?。2) 你确定rootVisual是Window而不是ElementHost之类的其他东西吗?是的,我需要实际的Window实例,我可以使用句柄设置子对话框的所有者,但我们有一些需要访问SCVMM窗口上的AddIn按钮的要求,因此如果我可以获得该窗口的句柄,我将能够遍历可视化树并访问AddIn按钮。2) 您是对的,rootvisual不是一个窗口,它是一个contentcontrol,它不是SCVMM窗口的内容控件,它是jsut返回我的外接程序控件