繁体   English   中英

c# MainWindowHandle 始终为零

[英]c# MainWindowHandle always zero

我阅读了一些关于 MainWindowHandle 的线程,但我找不到解决我的问题的方法,我正在启动一个 gui 应用程序并希望通过进程 object 获取 MainWindowHandle,但如果我不打算获取 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,他会得到正确的句柄。

简而言之:如果我得到句柄,我只想继续我的代码!=零,但我不想为此等待 static 时间

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM