日期:2014-05-20  浏览次数:20933 次

Process.MainWindowHandle的问题
p = new Process();
p.StartInfo.FileName = dlg.FileName;
p.Start();
p.WaitForInputIdle();
while (p.MainWindowHandle.ToInt32() == 0)
{
  Thread.Sleep(1);
}

SendMessage(p.MainWindowHandle,...

我预期的本来是在p程序启动起来后能通过p.MainWindowHandle得到其主Form的Handle,但我发现只要我第一次调用p.MainWindowHandle的时候若为空,则它将一直为空。(我这里的程序于是就要看运气,有时成功有时死循环)
那么p.MainWindowHandle还有用吗?能有其他办法获得Handle吗?

------解决方案--------------------
while (!process.HasExited)
{
process.Refresh();
if (process.MainWindowHandle.ToInt32() != 0)
{
//你的代码
}
}