Re: деинсталляция hook dll
От: Вумудщзук Беларусь  
Дата: 17.03.06 10:11
Оценка: 30 (7)
>Коллеги, подскажите 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...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.