在使用C#的Process.Start()启动一个窗口后,有没有办法获取该窗口的窗口句柄(IntPtr)?
在使用C#的Process.Start()启动一个窗口后,有没有办法获取该窗口的窗口句柄(IntPtr)?
使用
process.MainWindowHandle;
在启动应用程序时,它可能为0,因此您可能希望循环并休眠直到其填满。
IntPtr appHwnd = proc.MainWindowHandle;
while (appHwnd == IntPtr.Zero)
{
Thread.Sleep(100);
appHwnd = proc.MainWindowHandle;
}
有什么问题吗? - Marcel这不是最新的话题,但答案是不完整的。
我赞同使用 Process.MainWindowHandle 解决方案,并等待该值的到来,但不赞成使用 Sleep。
如果您刚启动进程并希望使用其主窗口句柄,请考虑使用 WaitForInputIdle 方法来允许进程完成启动,确保已创建主窗口句柄。
此重载仅适用于具有用户界面和消息循环的进程。
Process.WaitForInputIdle
在 WPF 应用程序上使用时似乎几乎立即返回。我认为这是由于 WPF 内部机制所致... - Grahamvs