Как я могу гарантировать, что UnhookWindowsHookEx вызывается даже в случае сбоя прекращение?

К сожалению, MSDN с этим недостаточно ясно.Я пишу программу, которая использует глобальную ловушку, и меня беспокоит, что произойдет, если программа завершится ненормально (вылетит, убита пользователем и т. Д.).

  1. Отключает ли Windows автоматически глобальные хуки, установленные процессом, когда процесс завершается?

  2. Если нет, можно ли вызвать UnhookWindowsHookEx () в другом процессе, чтобы освободить ловушку? (Я подумываю сделать это в подключенном потоке, если он обнаружит, что процесс установки мертв.)

  3. Если ответы были «нет», не опасно ли оставлять глобальную ловушку активной, когда процесс установки прекращается? Каковы стандартные методы решения этой ситуации?

  4. Я читал в MSDN, что UnhookWindowsHookEx () не освобождает dll, загруженную в другие процессы, но не сообщает, когда будет освобождена dll. Эта статья в CodeProject , кажется, предполагает, что dll не отображается (в соответствующем процессе), когда первое сообщение прибывает в подключенный поток, так что это примерно сразу после вызова UnhookWindowsHookEx (). Это правда?

Спасибо.

10
задан Cody Gray 18 December 2010 в 16:47
поделиться