Здравствуйте Tagus, Вы писали:
T>Здравствуйте уважаемый All.
T>Это снова я и снова со странным вопросом
.
T>Имеется DLL, в которой имеется хуковая процедура,
T>которая отлавливает мышиные сообщения. Процедура
T>нормально регистрируется с помощью вызова
T>hHook = SetWindowsHookEx (WH_MOUSE, HookProc, hInstDLL, 0)
T>и нормально разрегистрируется с помощью вызова
T>UnhookWindowsHookEx (hHook). И все это нормально
T>работало, но возникла потребность отсчитать заданное
T>время от последнего мышиного события. Соответственно,
T>в HookProc был добавлен в числе прочего такой вызов:
T>SetTimer (NULL, 0, TIMEOUT, TimerProc)
T>и вроде-бы тоже работает, НО при попытке
T>снять хук вызовом UnhookWindowsHookEx имеем
T>страшное сообщение о том, что программа выполнила
T>некорректную операцию и про сбой при обращении к
T>странице памяти. В чем может быть дело? Если нет
T>мыслей по поводу возможных причин — хоть киньте пример
T>кода, если приходилось делать вызов таймера в
T>хуковой процедуре в DLL.
T>Помогите люди добрые, сами мы не местные...
T>Спасибо.
Я думаю, проблема в том, что происходит попытка вызвать TimerProc, когда DLL уже выгружена. Почему не помогает KillTimer не знаю. Можно поместить TimerProc в другую dll, загружать её при загрузке в новый процесс, а потом не выгружать.