c# MainWindowHandle 始终为零

标签 c# process handle

我阅读了一些关于 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/

相关文章:

c# - C#异步Socket.BeginSendFile仅发送两个异步文件

使用记事本的 C# 应用程序

c# - 对数组中的 BinarySearch 感到困惑

node.js - 运行 Node 进程 - 注入(inject)新的环境变量

Jquery UI 可排序,按钮不能用作句柄

c++使用字符串句柄对对象进行通用存储和检索

c# - 使用 SMTP 时出现 "An attempt was made to access a socket in a way forbidden by its access permissions"

Android以太网使用dhcp配置IP

C - WinAPI - 向线程发送消息并等待它

.net - 是否可以获取WPF Popup控件的Hwnd?