C # получить дескриптор окна после запуска процесса - PullRequest
5 голосов
/ 14 сентября 2009

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

Ответы [ 4 ]

21 голосов
/ 14 сентября 2009

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

6 голосов
/ 14 сентября 2009

Используйте

process.MainWindowHandle;

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

5 голосов
/ 16 мая 2016

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

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

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

Process.WaitForInputIdle

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

2 голосов
/ 14 сентября 2009

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

...