>Коллеги, подскажите pls каким образом обычно решается следующая проблема. Есть некое приложение, которое использует хуки — например "хучит мышь". Пользователь поигрался с программой, а потом решил её деинсталлировать. Удалить hook.dll не всегда представляется возможным, т.к. она может быть загружена в адресное пространство другого процесса и использоваться. Однако оставлять компонент деинсталлированной программы имхо не есть гут. Как штатно обходится эта неприятность ?
Хуковая dll загружается в процесс тогда, когда процесс (не совсем точно... видимо, когда любой из потов процесса) получает сообщение в очередь. Аналогично dll'ка выгружается, когда в приходит сообщение, а система обнаруживает, что хук снят. Так что если процесс висит в бэкграунде и не получает сообщений, dll'ка будет болтаться в его адресном пространстве. А чтобы форсировать выгрузку можно попробовать после снятия хука послать всем приложениям какое-нть сообщение, например WM_NULL:
DWORD dwRecipients = BSM_ALLCOMPONENTS;
BroadcastSystemMessage(BSF_POSTMESSAGE, &dwRecipients, WM_NULL, 0, 0);
Homo sum et nihil humani a me alienum puto...