I>>Нужно хоть каким-то способом убрать WH_CBT/WH_CALLWNDPROC хуки из подобных cmd-процессов при завершении программы. Метод может быть самый фантастический, лишь бы работал и не был ощутим по производительности (даже те таймеры, которые я пробовал не были заметны в системе).
Кё>Могу дать такую наводку — хуки снимаются где-то внутри GetMessage/PostMessage, и до тех пор, пока эти функции не будут вызваны, он не будет выгружен. Возможно что cmd.exe как-то виснет в ожидании чего-то, или у него просто нет нормального цикла обработки сообщений. Может поможет его потоку отправить PostThreadMessage, или завести свой и там вызвать GetMessage?
Консольное приложение обычно вообще не имеет цикла выборки. А окна для него создает и менеджит csrss. Так что хуки если и смогуть попасть — то туда. При этом dll может загрузить и консольное приложение, при некоторых из вызовов user32 такое, я полагаю, возможно. Судя по описанию, так и именно и происходит. Да, предложенное решение
http://www.rsdn.ru/forum/winapi/3544366.1.aspxАвтор: Inversion
Дата: 22.09.09
неработоспособно ввиду того, что процесс может как иметь консоль, так и окна с нормальным циклом выборки сообщений.