Безопасное закрытие приложений

У меня есть 2 программы в Delphi - служба и некоторые дочерние процессы, которые могут выполняться в любом сеансе пользователя (они начинаются, когда служба запускается и должна закрываться, когда служба останавливается).

Когда служба прекращается, я должен безопасно закрыть дочерние приложения, чтобы они уловляли события formClose / FormDestroy.

Служба не может использовать настольную связь, поэтому она не может отправлять эти WM-процессы, такие как WM_Close и т. Д.

Вызов TerminateProcess не приводит к возникновению событий formClose / FormDestroy в моих дочерних процессах ...

Итак, какой способ завершения дочернего процесса можно использовать здесь?

В настоящее время единственная идея, которую мы имеем, - запустить taskkill.exe / im process.exe в каждом сеансе пользователя - это как-то заставляет убитый процесс запускать formClose / FormDestroy. Как это работает? Просто отправив WM_CLOSE?

delphi,winapi,delphi-xe8,

-2

Ответов: 1


0

Лучшим решением является простой IPC. В этом случае все, что вам действительно нужно, это глобальный объект события с ручным перезагрузкой, как уже указывал IInspectable.

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

Дельфы, WinAPI, Дельфы-X Е8,
Похожие вопросы