На самом деле - практически никак.
Более того, OnClose и OnCloseQuery могут не сработать дяже просто при закрытии сессии (сам "нарвался"). Если разговор идет о закрытии через Диспетчер задач, то надо хукать TerminateProcess, который, на самом-то деле, сам убиваемый процесс и не спрашивает ниочем. Просто гасит без всякой жалости.
Тут лучше построить другую схему, т.к. существующая все-равно не защитит от всех возможный способов/причин умирания процесса. Лучше пусть приложение периодически посылает пакет, что оно все еще живо, а сервер просто проверяет когда последний раз пришел такой пакет и принисает решение - жив клиент или нет.
|