Как узнать, когда win.form загружается Process.Start?

2

Я в WindowsForm (С#.net 3.5) и одним нажатием кнопки запускаю другое внешнее приложение (также .net 3.5) с помощью Process.Start() и понимаю, когда он доступен после того, как я запустил его.

    ProcessStartInfo psInfo = new ProcessStartInfo(@"MyApplication.exe");
psInfo.RedirectStandardOutput = true;
psInfo.RedirectStandardError = true;
psInfo.UseShellExecute = false;
psInfo.CreateNoWindow = true;
Process proc = Process.Start(psInfo);

proc... IsFullyLoaded()?

Как я могу это сделать?

Теги:
winforms
process
loaded

2 ответа

3
Лучший ответ

Чтобы ожидание процесса создания формы, вызовите метод WaitForInputIdle.

Чтобы узнать, готова ли она, попробуйте следующее:

bool isReady = proc.WaitForInputIdle(0);

Или, альтернативно,

bool isReady = (proc.MainWindowHandle != IntPtr.Zero);

Вы также можете использовать свойство MainWindowHandle для отправки сообщений в форму с помощью функции API SendMessage

0

Вы можете передать аргумент процессу, чтобы он знал, как он был запущен.

psInfo.Arguments = "-startedByProcess";

Затем выполните обратный вызов дочернего процесса для процесса владельца, чтобы он знал, что он запущен, путем удаленного доступа или что-то в этом роде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню