这是我用来更改进程父级的代码:
Process p = new Process("calc.exercise");
SetParent(p.MainWindowHandle, this.Handle);
它刚刚停止工作。他们有更新改变它还是会出现其他问题?
答案 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
- 你的过程。