Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.11.2007
Сообщений: 15
1

В чем разница между процедурой окна и хуковской процедурой?

13.11.2007, 20:34. Показов 1218. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поясню вопрос:
Как я понял определенный хук 'фильтрует' сообщения пришедшие окну и может их обрабатывать. Аналогично процедура окна
как мы знает делает след.: 'The WindowProc function is an application-defined function that processes messages sent to a window.'
В WindowProc() мы можем сделать след:
case WM_CLOSE:
::MessageBox(NULL,'Closing Window', 'FOO', MB_OK);
........
Но если мы попробуем повторить это в хуке, то виснет прога, ото и вся система. Кроме Send(Post)Message(), мы из хука не можем вызывать никакую другую ф-цию(потому-что нельзя задерживать очередь сообщений(если я не прав скажите)), напр. MessageBox().
Тогда по большому счету, что делает и на что нужна хуковая процедура, если я могу с в длл могу заменить процедуру окна([i]LONG kk = SetWindowLong(hWNDs[temp_num],GWL_WNDPROC,(LONG)MyWndProc);[i/]) и делать что захочу???
И в чем вообще разница между ними???
Скажите если я где-то не прав.
Спасибо Всем кто дочитал до сих пор.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2007, 20:34
Ответы с готовыми решениями:

В чем разница между X x; и X x()?
Корректный ли этот ответ?

В чем разница между [] и * ?
Думал, что ни в чем, но когда попытался сделать так: (в файле 1) char lc; в файле 2: extern...

В чем разница между С и С++
Возник вопрос в чем жи разница между С и С++ кроме того, что в С++ есть классы а в С их нету ?

Помогите с процедурой для программы.
Помогите пожалуйста сделать так, чтобы процедура возвращала в основную программу результат c и код...

3
0 / 0 / 1
Регистрация: 21.02.2007
Сообщений: 126
14.11.2007, 06:15 2
Хуки - системные перехватчики сообщений. WndProc - локальный перехватчик. С терминами утвердились :-). В локальной очереди сообщений ты можешь творить что хочешь. При работе хука он ТРАНСЛИРУЕТ соот. сообщения ТЕБЕ в надежде что ты их обработаешь и передашь сообщение дальше по цепи, но это не говорит о подмене WndProc т.к. она является главной процедурой окна. И в доках четко сказано, что обработчики хука по возможности должны быстро проводить обработку. Т.е. твой прием перехвата WndProc в корне не верен. А виснет из-за того, что получаешь адрес другого процесса, но выполнить код пытаешься в своем адресном пространстве. Для получения нормальных данных из чужого адресного пространства используй в хуке WM_COPYDAT.
0
0 / 0 / 1
Регистрация: 21.02.2007
Сообщений: 126
14.11.2007, 06:27 3
WM_COPYDATA
0
YURA
14.11.2007, 10:28 4
Путь прохождения сообщений в Win32:
Сообщение - Приложение - Окно.
И если подклассифицировать окно(SetWindowLong), то можно вклиниться только в цепь Приложение - Окно, при использовании же хуков идет вклинивание в Сообщение - Приложение. По-моему так.
14.11.2007, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2007, 10:28
Помогаю со студенческими работами здесь

Написать код с функцией и процедурой
На картинце 1.Функция 2.Процедура Количество строчек(n)=3 Количество столбцов(m)=8 Начальный...

В чем разница между malloc и new?
в чем разница? что лучше использовать?

В чем разница между new и malloc()?
Всем доброго дня ! Начал читать книгу Пахомов Б. "C/C++ и MS Visual C++ 2008 для начинающих" ...

В чем разница между Double и Float?
Хмм? :(


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru