Да, пока что оба способа у меня вроде бы работают корректно, но где то на форумах местной тематики писали что у процесса может быть несколько окон, и следовательно несколько хэндлов. И если закрывать по хэндлу, то не получится или так, что сигнал закрытия отправится в нужный процесс, но не тому хэндлу?
Вообще у меня время от времени возникают трудности с получением хэндлов из pid, полученного функцией Run(). Для получения хэндла я пользуюсь функцией _WinAPI_EnumProcessWindows() и в это самое время я проверяю функцией Winlist() какой хэндл соответствует этому pid. И приблизительно в 1 случае из 100 эти две функции выдают разные хэндлы для одного и того же PID, и когда это происходит, заголовок окна из Winlist() получается странным: 'GDI+ Window'