我读了一些关于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
Run Code Online (Sandbox Code Playgroud)
他永远不会离开,如果我用正常的线程替换waitforinputidle.睡觉他得到正确的句柄.
简单地说:我只想继续我的代码,如果我得到一个句柄!=零,但我不想等待一个静态的时间
存储在MainWindowHandle中的值被缓存.在循环中添加process.Refresh()以使该值无效:
while (process.MainWindowHandle == IntPtr.Zero)
{
Thread.Sleep(100);
process.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6504 次 |
| 最近记录: |