我在多进程C#WPF应用程序中有以下场景:
MainApplication有一个占位符来包含子进程的HWND。
使用SetParent和一些更多的Windows函数(P / Invoke,Windows API)我可以将子应用程序设置为在主应用程序中生效,而不会让用户知道它们是2个进程。 到现在为止一切正常。
问题在于,每次从子进程打开模态对话框时,模态对话框实际上都不是模态的。相反,如果我独立运行子应用程序(相同的exe),模态对话框可以正常工作。
使用Spy ++我意识到如果作为子进程运行(不按预期工作),模式对话框的所有者是桌面,或者如果是独立运行(按预期工作),则运行正确的应用程序窗口。
我也尝试在对话框中使用:: SetParent,但没有任何改变,似乎当从托管进程创建对话框时,WPF无法正确设置它的父级。
我做错了吗?
编辑:当然我尝试使用wpf方法设置对话框的所有者(也是WindowInteropHelper)