我读了一些关于 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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)