Вообще-то еще неизвестно, какое окно является главным

Может оно мессэдж бокс покажет или сплеш скрин до показа своего основного окна. Или в промежутке между двумя енумерациями создаст сразу 10 окон, как дельфи делает, например.
M>Нужно перечислить окна через EnumWindows, а затем в EnumWindowsProc вызывать GetWindowThreadProcessId и сравнивать полученный ProcessID cо значением, полученным от CreateProcess. Можно было бы сравнивать и ThreadID, но не факт, что первичный поток процесса создаст окно, хотя в большинстве случаев так оно и есть.