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

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

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

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

13.11.2007, 20:34. Просмотров 867. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем разница между процедурой окна и хуковской процедурой? (C++):

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

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

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

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

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

В чем разница между const и constexpr? - C++
Когда стоит применять constexpr? В чём его отличие от const? Если можно конкретные примеры в их различиях. Например, constexpr int m =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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), то можно вклиниться только в цепь Приложение - Окно, при использовании же хуков идет вклинивание в Сообщение - Приложение. По-моему так.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2007, 10:28
Привет! Вот еще темы с ответами:

В чем разница между MSVC2010 и MSVC2013? - C++
Приветствую! В чем разница между MSVC2010 и MSVC2013? В чем и где это может проявиться? Что стало лучше в, наверно, следующей версии...

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

В чем разница между random и randomize? - C++
в чем разница между random и randomize??

В чем разница между f.read(),f.write() и f<<., f>>.? - C++
В чем разница между f.read(),f.write() и f&lt;&lt;..., f&gt;&gt;...?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.11.2007, 10:28
Ответ Создать тему
Опции темы

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