FindWindow和SetParent - 导致子窗口(或进程)退出

时间:2015-01-20 08:12:01

标签: c# .net pinvoke

我曾尝试使用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值看起来像一个正确的值...

0 个答案:

没有答案