C# получить дескриптор окна после запуска процесса

Есть ли способ получить дескриптор окна (IntPtr) для окна после его запуска из приложения C# с Process.Start()?

4 ответа

Решение

Если вы ищете главное окно, Process.MainWindowHandle даст вам то, что вам нужно.

Использование

process.MainWindowHandle;

Вероятно, при запуске приложения оно равно 0, поэтому вы можете захотеть зацикливаться и спать, пока оно не заполнится.

Это не недавняя тема, но ответы на нее неполные.

Я согласен с решением Process.MainWindowHandle и ждать значения, но не с Sleep.

Если вы только что запустили процесс и хотите использовать его дескриптор главного окна, рассмотрите возможность использования метода WaitForInputIdle, чтобы процесс мог завершиться, гарантируя, что дескриптор главного окна был создан.

Process.WaitForInputIdle

Эта перегрузка применяется только к процессам с пользовательским интерфейсом и, следовательно, с циклом сообщений.

Вы также можете вызвать Refresh() в процессе, чтобы убедиться, что информация в точности

Другие вопросы по тегам