我曾尝试使用FindWindow(字符串className,字符串windowName)获取IntPtr到子进程的窗口,然后调用SetParent(Intptr childWindow,IntPtr parentWindow)将子进程窗口设置为父窗口。
不知何故,子进程的窗口没有设置到父进程中,子进程在执行SetParent()后退出。
子进程在代码之外运行(双击exe文件)
以下是父程序中的代码片段:
public void Hops()
{
IntPtr ptr = FindWindow(null, "WinAp");
// this is a WPF window
var currentWindowHelper = WindowInteropHelper(this);
SetWindow(ptr, currentWindowHelper.Handle);
}
但是,如果我以编程方式(使用Process)而不是使用FindWindow()在Hops()函数中启动子进程,则使用SetParent()没有问题 - 即。子窗口设置在父窗口中。
所以,问题是,为什么子进程退出? FindWindow()返回的IntPtr值看起来像一个正确的值...