Это должно быть легко: я создаю программу, которая запускает процесс с помощью 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
, он будет работать нормально. Но это похоже на очень плохой хак.
Как я могу это улучшить?