Здесь - это метод Карла Петерсона VB6 для закрытия приложений. Как вы просите, это спрашивает хорошо - отправка WM_CLOSE вместо использования TerminateProcess. Обратите внимание, что он отправляет сообщение всем окнам верхнего уровня, принадлежащим процессу, их может быть больше одного.
Я не пробовал этого, но по моему опыту код Карла Петерсона всегда оценивает пять звезд из возможных пяти!
РЕДАКТИРОВАТЬ: Обратите внимание, что это отредактированная версия исходного ответа, и теперь ссылки на последнюю версию кода Карла. Если у кого-то есть вопросы по этому поводу, Карл по-прежнему активен в группе новостей VB6 , но я не думаю, что он зависает в переполнении стека.