Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Meruzhan Grigoryan
0 / 0 / 0
Регистрация: 13.11.2007
Сообщений: 15
#1

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

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

Поясню вопрос:
Как я понял определенный хук 'фильтрует' сообщения пришедшие окну и может их обрабатывать. Аналогично процедура окна
как мы знает делает след.: '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/]) и делать что захочу???
И в чем вообще разница между ними???
Скажите если я где-то не прав.
Спасибо Всем кто дочитал до сих пор.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2007, 20:34     В чем разница между процедурой окна и хуковской процедурой?
Посмотрите здесь:

В чем разница между random и randomize? C++
В чем разница между управляемой и неуправляемой кучей? C++
Объясните в чем разница между Visual C++ и С++ и C++ Builder C++
В чем разница между вектором и массивом C++
C++ Помогите с процедурой для программы.
C++ В чем разница между Рекурсией и Итерацией?
В чем разница между заголовочными файлами и библиотеками C++
C++ В чем разница между терминами замещение и переопределение
C++ В чем разница между push_back и push?
C++ В чем разница между функциями strcat() и strcpy()?
В чем разница между scanf_s и scanf? C++
В чем разница между Double и Float? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zans
0 / 0 / 0
Регистрация: 21.02.2007
Сообщений: 128
14.11.2007, 06:15     В чем разница между процедурой окна и хуковской процедурой? #2
Хуки - системные перехватчики сообщений. WndProc - локальный перехватчик. С терминами утвердились :-). В локальной очереди сообщений ты можешь творить что хочешь. При работе хука он ТРАНСЛИРУЕТ соот. сообщения ТЕБЕ в надежде что ты их обработаешь и передашь сообщение дальше по цепи, но это не говорит о подмене WndProc т.к. она является главной процедурой окна. И в доках четко сказано, что обработчики хука по возможности должны быстро проводить обработку. Т.е. твой прием перехвата WndProc в корне не верен. А виснет из-за того, что получаешь адрес другого процесса, но выполнить код пытаешься в своем адресном пространстве. Для получения нормальных данных из чужого адресного пространства используй в хуке WM_COPYDAT.
zans
0 / 0 / 0
Регистрация: 21.02.2007
Сообщений: 128
14.11.2007, 06:27     В чем разница между процедурой окна и хуковской процедурой? #3
WM_COPYDATA
YURA
Сообщений: n/a
14.11.2007, 10:28     В чем разница между процедурой окна и хуковской процедурой? #4
Путь прохождения сообщений в Win32:
Сообщение - Приложение - Окно.
И если подклассифицировать окно(SetWindowLong), то можно вклиниться только в цепь Приложение - Окно, при использовании же хуков идет вклинивание в Сообщение - Приложение. По-моему так.
Yandex
Объявления
14.11.2007, 10:28     В чем разница между процедурой окна и хуковской процедурой?
Ответ Создать тему
Опции темы

Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru