Как определить, когда порожденный процесс готов? (Использование CreateProcess () и FindWindow ())

Это должно быть легко: я создаю программу, которая запускает процесс с помощью win32 CreateProcess () функция. После загрузки этого процесса я нахожу его окно с помощью FindWindow и отправляю ему сообщения с помощью SendMessage () . Вопрос в том, как мне узнать, готово ли это окно принимать сообщения?

Учтите следующее:

HWND wnd;

BOOL Start()
{
  // Spawn the process
  if (! CreateProcess(...))
    return FALSE;

  // Find the process's window (class and name already known)
  wnd = FindWindow(MY_WINDOW_CLASS, MY_WINDOW_NAME);

  // Always returns FALSE because window has not yet been created.
  return (wnd != NULL);
}

Приведенный выше код (почти?) Всегда терпит неудачу; окно не может быть создано и найдено так быстро. Если я поставлю поток ожидания, скажем Sleep (1000) , между вызовами CreateProcess и FindWindow , он будет работать нормально. Но это похоже на очень плохой хак.

Как я могу это улучшить?

8
задан Courtney Christensen 5 November 2010 в 15:41
поделиться