Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.05.09;
Скачать: [xml.tar.bz2];

Вниз

Замять сообщение   Найти похожие ветки 

 
Kaurtsev   (2002-03-04 19:41) [0]

Братья земляне помогите!
Я отлавливаю при помощи хука на шелл какое либо событие, но как сделать что бы на этом оно и закончилось, как обрубить его что бы система его не получила? И где обрубать? В dll?


 
Song   (2002-03-04 20:10) [1]

обычно когда отлавилвают сообщении, пишут Procedure .... (Var Msg:TMessage);
Словечко Var обозначает, что сообщение по инструкции inherited уйдёт из вашей процедуры уже с теми изменениями, которые Вы можете сделать. Поэтому чтобы "замять" сообщение, обычно достаточно написать Msg:=0;


 
Юрий Зотов   (2002-03-04 20:41) [2]

> Kaurtsev © (04.03.02 19:41)

Хук WH_SHELL не позволяет модифицировать сообщения. Нужно ставить хук WH_GETMESSAGE.


> Song © (04.03.02 20:10)

1. Речь идет о глобальных хуках.
2. Есть подозрение, что вариант (Var Msg:TMessage) в сочетании с последующим Msg:=0 даже не откомпилируется.


 
Raptor   (2002-03-04 23:25) [3]

2 Kaurtsev
Не вызывать CallNextHookEx.


 
Dimaond Cat   (2002-03-05 01:56) [4]

если не вызывать Callnexthookex то сообщение замнется только для последующих в цепочке обработчиков, тогда как все предъидущие его нормально схавают.


 
Kaurtsev   (2002-03-05 09:46) [5]

Я пробовал через WH_GETMESSAGE, но она выдаёт беск вереницу 0 и 1,(отображаю WParam в Memo) а на нажатия кнопок, раскрытие окон и меню ноль внимания. В частности мне нужно запретить раскрытие стартового меню при нажатии микрофлага на клаве и Ctrl+Esc. Может поподробнее обьясните?


 
Raptor   (2002-03-05 10:42) [6]

2 Dimaond Cat
Дык, ясен перец. Но тут спасения нет, разве что всегда ставить хук самым первым в цепочке. Иначе никак.

2 Kaurtsev
Я пробовал через WH_GETMESSAGE, но она выдаёт беск вереницу 0 и 1,(отображаю WParam в Memo)
А ты не отображай. Ты лучше хелп почитай, что это значит. ;-)
Тем более, что основная информация про перехваченое сообщение находится в lParam, а не в WParam.


 
Fellomena   (2002-03-05 11:03) [7]

Если я не ошибаюсь, некоторые сообщения вообще нельзя модифицировать - на них можно только реагировать !
А некоторые можно "останавливать".
К примеру в процедуре обработке хука WH_KEYBOARD есть возможность "остановить" дальнейшее прохождение сообщения (Result:= 0/ not(0))

2 Raptor:
Если не вызывать CallNextHookEx, то не будет вызываться предыдущий хук. А, как ты знаешь, перед твоим хуком, даже если он первый, всегда стоит обработчик самой системы, который независимо от того вызовешь ты CallNextHookEx или нет - обработает сообщение. (опять же речь идёт не о всех типах сообщений)
Сам попробуй с разными типми хуков - убедишься :)


 
Raptor   (2002-03-05 22:54) [8]

2 Fellomena
Причем здесь обработчик системы? Если ставить хук на WH_GETMESSAGE, то система тут ничего не делает. Потоку посылается сообщение, а мы его перехватываем и не отдаем потоку. В результате получается, что с точки зрения потока этого сообщения как будто бы и вообще не было.
Но здесь проблема в другом. То что хочет автор вопроса можно сделать только ставя хук на WH_SHELL, а эти сообщения, в большинстве своем, только информативные. То есть изменить что то мы уже не можем. Мы только получаем информацию о каком-то уже состоявшемся событии.


 
Dimaond Cat   (2002-03-05 23:24) [9]

А вот докучи, если мы ставим наш процес, по приоритету, одним из первых, то будет ли его хук одним из первых в цепочке обработчиков сообщения? если кто знает ответьте, а то чесно говоря лень проверять.


 
Fellomena   (2002-03-06 10:40) [10]

2 Dimaond Cat:
НИКОГДА !
Хуки выстраиваются в цепочку строго по мере их установки и никак иначе.


 
Dimaond Cat   (2002-03-06 22:23) [11]

это плохо



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.05.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
14-26230
SPeller
2002-03-31 17:30
2002.05.09
Шаровары


1-26071
KvORubin
2002-04-23 18:53
2002.05.09
Проблемы с КОДИРОВКОЙ текста !!! - как изменить её ???


1-26154
Locked
2002-04-25 07:13
2002.05.09
Помогите!!! Как в реестр записать файл, а потом его считать?


1-26099
Tonie
2002-04-25 12:34
2002.05.09
AppServer shut down: Проблема при подключенных клиентах ...


3-26007
Chepura Sergey
2002-04-15 17:42
2002.05.09
Поиск в таблицах Intrbase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский