2015-04-20 77 views
-2

这是我用来改变进程的父代码:SetParent不再有效?

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

它只是停止工作。他们有没有改变它的更新或者是否有其他问题?

回答

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); 
+0

对不起,我有开始,而不是发送过程和exe自动更正在我的手机上运行 – Austin

+0

@奥斯汀你的意思是你开始的过程,但它仍然不工作? –

+0

是的,它开始了,我没有改变大约2周的代码,它只是不工作了 – Austin