Уроки Iczelion'а


         

которые будут заполнены именем класса,


invoke SetWindowsHookEx,WH_MOUSE,addr Mouseproc,hInstance,NULL mov hHook,eax ret InstallHook endp
UninstallHook proc invoke UnhookWindowsHookEx,hHook
ret UninstallHook endp
End DllEntry ;---------------------------------------------- ; Это makefile DLL ;----------------------------------------------
NAME=mousehook
$(N*ME).dll: $(NAME).obj Link /SECTION:.bss,S /DLL /DEF:$(NAME).def /SUBSYSTEM:WINDOWS /LIBpATH:c:\masm\lib $(NAME).obj $(NAME).obj: $(NAME).asm
ml /c /coff /Cp $(NAME).asm
Анализ:
Пример отобразит диалоговое окно с тремя edit control'ами, которые будут заполнены именем класса, хэндлом окна и адресом процедуры окна, ассоциированное с окном под курсором мыши. Есть две кнопки - Hook и Exit. Когда вы нажимаете кнопку Hook, программа перехватывает сообщения от мыши и текст на кнопке меняется на Unhook. Когда вы двигаете курсор мыши над каким-либо окном, информация о нем отобразится в окне программы. Когда вы нажмете кнопку Unhook, программа уберет установленный hook.
Основная программа использует диалоговое окно в качестве основного. Она определяет специальное сообщение - WM_MOUSEHOOK, которая будет использоваться между основной программой и DLL с хуком. Когда основная программа получает это сообщение, wрaram содержит хэндл окна, над которым находится курсор мыши. Конечно, это было сделано произвольно. Я решил слать хэндл в wрaram, чтобы было проще. Вы можете выбрать другой метод взаимодействия между основной программой и DLL с хуком.
.if HookFlag==FALSE invoke InstallHook,hDlg .if eax!=NULL mov HookFlag,TRUE invoke SetDlgItemText,hDlg,IDC_HOOK,addr UnhookText .endif
Программа пользуется флагом, HookFlag, чтобы отслеживать соостояние хука.
Он pавна FALSE, если хук не установлен, и TRUE, если установлен.
Когда пользователь нажмет кнопку hook, программа проверяет, установлен ли уже хук. Если это так, она вызывает функцию InstallHook из DLL. Заметьте, что мы передаем хэндл основного диалогового окна в качестве параметра функции, чтобы хук-DLL могла посылать сообщения WM_MOUSEHOOK верному окну, то есть нашему.

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий