Здравствуйте SergH, Вы писали:
SH>Я думаю, проблема в том, что происходит попытка вызвать TimerProc, когда DLL уже выгружена. Почему не помогает KillTimer не знаю. Можно поместить TimerProc в другую dll, загружать её при загрузке в новый процесс, а потом не выгружать.
Вряд-ли. DLL не выгружается вызовом UnhookWindowsHookEx.
Для выгрузки DLL нужно вызвать FreeLibrary, чего не делается.
Кроме того, в случае глобального хука, который имеет место
быть, DLL не выгрузится даже после FreeLibrary, поскольку
глобальный хук привязывается ко всем запущенным в системе
процессам, соответственно, DLL должна висеть в памяти
пока все процессы не завершатся.