2009-03-30 1 views

ответ

2
+0

Это хорошо, но завершает процесс с помощью TerminateProcess API, чтобы остановить приложение, что не так приятно (например, у процесса нет никаких шансов что-либо сохранить). Я бы предпочел закончить его с помощью SendMessage hWnd, WM_CLOSE, 0 &, 0 &, но для этого требуется получить дескриптор окна из идентификатора ProcessID – AngryHacker

5

Here является метод VB6 Карла Петерсона для закрытия приложений. Как вы просите, это запрашивает красиво - отправка WM_CLOSE, а не использование TerminateProcess. Обратите внимание, что он отправляет сообщение всем окнам верхнего уровня, принадлежащим процессу, их может быть больше одного.

Я не пробовал это, но по моему опыту код Карла Петерсона всегда оценивает пять звезд из возможных пяти!

EDIT: Обратите внимание, что это отредактированная версия исходного ответа, а теперь ссылки на последнюю версию кода Карла. Если у кого-то есть вопросы по этому поводу, Карл все еще активен на VB6 newsgroup, но я не думаю, что он зависает в Stack Overflow.