Показать сообщение отдельно
  #12  
Старый 28.12.2011, 16:53
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я же не спроста написал выше:
Код:
result:=1;
Я в хуках не сильно разбираюсь, но насколько я знаю, возврат нуля винда будет расценивать как "все ок, продолжаем работу" и сама передаст управление следующему хуку. Возврат же другого числа винда посчитает ошибкой, и цепь ловушек прервется, сообщение будет остановлено. Так что нужно там, где идет блок, результату присвоить значение, отличное от нуля. Тогда нажатие правой кнопки мыши так и не доберется до калькулятора.
А вот всякие ухищрения вроде попыток убрать меню и пр. бесполезны - хук обрабатывается до того, как сообщение о нажатии кнопки мыши дойдет до окна калькулятора, а значит до того, как это меню отобразится.
[лирическое отступление] Вообще убрать уже открывшееся меню может быть крайне трудной задачей - например, ничто не мешает по нажатию правой кнопки мыши просто-напросто нарисовать белый прямоугольник с текстом в нем, и при движении мыши подсвечивать разные строки. И отловить такое "открытие меню" будет почти невозможно, не говоря уже о том, чтобы стереть это "меню" и восстановить предыдущее изображение, да вдобавок отключить обработчики движения мыши над картинкой. Так что лучше сделать так, чтобы сообщение о ПКМ просто не добиралась до интересующего окна.[/лирическое отступление]
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием