我阅读了一些关于 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,他会得到正确的句柄。
简而言之:如果我得到句柄,我只想继续我的代码!=零,但我不想为此等待静态时间
最佳答案
存储在 MainWindowHandle 中的值被缓存。在循环中添加一个 process.Refresh() 以使该值无效:
while (process.MainWindowHandle == IntPtr.Zero)
{
Thread.Sleep(100);
process.Refresh();
}
关于c# MainWindowHandle 始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10102526/