10

有没有办法在使用 Process.Start() 从 C# 应用程序启动窗口后获取窗口句柄 (IntPtr)?

4

4 回答 4

25

如果它是您所追求的主窗口,Process.MainWindowHandle它将为您提供所需的东西。

于 2009-09-14T12:14:23.163 回答
8

采用

process.MainWindowHandle;

启动应用程序时它可能为 0,因此您可能希望循环并休眠直到它被填满。

于 2009-09-14T12:15:35.587 回答
6

这不是最近的话题,但答案并不完整。

我同意 Process.MainWindowHandle 解决方案并等待该值,但不同意 Sleep。

如果您刚刚启动了一个进程并想使用它的主窗口句柄,请考虑使用 WaitForInputIdle 方法让该进程完成启动,确保已创建主窗口句柄。

Process.WaitForInputIdle

此重载仅适用于具有用户界面的进程,因此也适用于消息循环。

于 2016-05-16T13:49:27.443 回答
2

您也可以在进程中调用 Refresh() 以确保信息准确无误

于 2009-09-14T13:05:22.693 回答