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