c#MainWindowHandle始终为零

时间:2012-04-11 08:36:00

标签: c# process handle

我读了一些关于MainWindowHandle的线程,但是我无法找到解决我的问题的方法,我正在启动一个gui应用程序,并希望通过进程对象获取MainWindowHandle,但如果我是,则句柄值始终为零在加载gui之前不要等待thread.sleep()。我也尝试使用WaitForInputIdle,但它根本没有帮助。

process.Start();

process.WaitForInputIdle(1000);
while (process.MainWindowHandle == IntPtr.Zero)
{
     Thread.Sleep(100);
}
// do something with the handle

他永远不会离开,如果我用正常的thread.sleep替换waitforinputidle,他会把握正确的句柄。

用简单的话说:我只想继续我的代码,如果我得到一个句柄!=零,但我不想等待一个静态时间这个

1 个答案:

答案 0 :(得分:8)

缓存存储在MainWindowHandle中的值。在循环中添加process.Refresh()以使该值无效:

while (process.MainWindowHandle == IntPtr.Zero)
{
    Thread.Sleep(100);
    process.Refresh();
}