![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Здравствуйте.
Как перехватить WindowProc (главную процедуру окна) до изменения. Дело в том что я хочу обрабатывать например Alt+F4 и не допускать завершения программы и тому подобное. Делаю например вот так
Тоесть делаю процедуру которая фильтрует и не передаёт дальше Alt+F4. Проблема заключается в том что если добавить например на форму TMemo, то сообщения не будут обрабатываться и при нажатии Alt+F4 форма будет закрываться. Можно конечно прикрутить и к TMemo тоже самое что и к форме но так я не могу сделать потому что на форме куча объектов. Как перехватить реальную процедуру обработки окна? Тоесть я хочу сделать чтобы все сообщения которые приходят окну сначала я обрабатывал. ![]() |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
а OnClose/OnCloseQuery не катит? )) з.ы. попробуй както так:
Это сообщение отредактировал(а) MetalFan - 22.8.2007, 22:00 -------------------- There are always someone smarter than you... |
|||
|
||||
Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 8 Всего: 13 |
Попробуй свойство формы KeyPreview, установить в значение true. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Не оба предложенные способа не работают.
Я всетаки не добиваюсь именно как недать закрыться окну по нажатию Alt+F4 , хочу сделать сам перехват до обработки. |
|||
|
||||
Fedia |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 8 Всего: 13 |
Вариант №1:
Вариант №2
-------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||||
|
|||||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Ak47black, если ты хочешь чтобы форма не закрывала ИМЕННО по alt+F4, то тебе следует обрабатывать OnKeyDown! Т.е. после того, как нажаты эти две кнопки, окну посылается сообщение закрытия. И, когда окно его получает - оно не знает откуда оно к нему пришло: либо от крестика справа вверху, либо от этих кнопок.
Сейчас нарисую пример отлавливания именно alt+F4. Добавлено через 5 минут и 38 секунд
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
sentry |
|
||||
Code Monkey ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 29.1.2007 Где: Москва Репутация: 2 Всего: 10 |
Sunvas, вот так лучше смотрится
![]()
А вот пример отлова WM_CLOSE оконной процедурой:
|
||||
|
|||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Ok. С закрытием тогда понятно как сделать, но всетаки через OnKeyDown всё не перехватываться на ранней стадии.
Например если попробовать перехватить и предотвратить Num Lk вот этим кодом
То он всеровно загорается. И еше например как Ctrl+Alt+Delete перехватить. Это сообщение отредактировал(а) Ak47black - 23.8.2007, 09:39 |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Тут по какой схеме происходит передача :
|
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Num Luck - надо хучить клаву. А по трем веселым кнопкам - ищи по форуму, там Yanis очень хороший пример приводил. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
CAD. |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Yanis, а ето только под админом наверное будет работать...
-------------------- There are always someone smarter than you... |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Всетаки будет-ли работать без прав админа для меня важно.
Пробовал поставить хук в самом приложении (тоесть без Dll), но невышло так как винт первый перехватывает. Это сообщение отредактировал(а) Ak47black - 23.8.2007, 19:52 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Windows ![]() Тоесть Windows первый проверяет вызвать-ли TaskManager. Это сообщение отредактировал(а) Ak47black - 23.8.2007, 20:28 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |