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

process.Start();

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


他从来没有离开过,如果我用一个普通的thread.sleep替换了waitforinputidle的话,他会正确处理。

简而言之:我只想在得到句柄的情况下继续执行我的代码!=零,但我不想为此等待静态时间

最佳答案

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

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

关于c# - C#MainWindowHandle始终为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10102526/

10-13 06:04