SetParent不再有效?

时间:2015-04-20 21:42:10

标签: c#

这是我用来更改进程父级的代码:

Process p = new Process("calc.exercise");
SetParent(p.MainWindowHandle, this.Handle);

它刚刚停止工作。他们有更新改变它还是会出现其他问题?

2 个答案:

答案 0 :(得分:3)

这一行只是创建一个流程实例:

Process p = new Process("calc.exercise");

它从未开始过。因此p.MainWindowHandle不具有有效值。

您需要通过调用Start方法启动该过程;或者如果您需要获取已在运行的进程的实例,请使用Process.GetProcessByName方法。

如果您已启动Process但仍无效 - 可能是MainWindowHandle属性未更新。这可能由于几个原因而发生。你需要给它一些时间。

例如:

int tries = 0;
while(p.MainWindowHandle == IntPtr.Zero && tries <3)
{
    tries++;
    Thread.Sleep(1000);
}
SetParent(p.MainWindowHandle, this.Handle);

答案 1 :(得分:0)

你还没有Start - 你的过程。