![]() |
Модераторы: 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 |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Yanis, А вообще реально сделать-ли всё это при помощи Hook, тоесть ловить это сочетание клавиш и обнулят? Ато с инджектом то могут возникнуть некоторые проблемы.
У юзера может и не быть прав админа например. Я пробовал сделать hook в самой проге и в dll но не выходит перехватить до того момента когда windows вызывает сам TaskManager например. ![]() |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Что за мания тотального контроля юзера?
ОНО надо юзеру? |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Я хочу просто получать все кнопки которые нажимаются и не дать им исполняться, а потом их воспроизводить например на удалённом компе
![]() Это сообщение отредактировал(а) Ak47black - 24.8.2007, 11:02 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Ak47black, а разве тот же RAdmin или RemouteDesktop такие сочетания дублируют на "ту сторону"???
-------------------- There are always someone smarter than you... |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
MetalFan, нет.
Он заменяет их другими сочетаниями. Наверно я так и сделаю. Извиняюсь что поднял тему. Это сообщение отредактировал(а) Ak47black - 24.8.2007, 14:37 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
да я знаю, что нет) у RAdmin'а эти сочетания через меню вроде можно послать) -------------------- There are always someone smarter than you... |
|||
|
||||
Virtuals |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 3 Всего: 11 |
под админом онли... в примере используется дебугпривелегии и запись в память другого процесса (winlogon а) ![]() в винлогоне хук ставится:
соответственно хук с помощью RegisterHotKey не прокатит нужно пользовать SetWindowsHookEx(WH_KEYBOARD, ... из длл, тоесть не передать в систему последнее нажатие VK_DELETE //должно получится удачи Это сообщение отредактировал(а) Virtuals - 26.8.2007, 17:52 |
||||
|
|||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Virtuals, врядли это пройдет) CAD не на уровне ОС генерируется AFAIK.
а передашь или нет последний Delete, это системе побарабану... з.ы. кстати, а как интересно Process Explorer от Sysinternals перехватывает CAD и себя вместо стандартного диспетчера подсовывает?! Добавлено через 6 минут и 26 секунд p.p.s нашел, как он это делает) прописывается в реестр -------------------- There are always someone smarter than you... |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
какето как вирус?! тогда все антивирусы и файрфолы и проч. тоже действуют "как вирус" )) -------------------- There are always someone smarter than you... |
|||
|
||||
Ak47black |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Взято из http://bash.org.ru.
Ну тут тогда как выход можно драйвер написать на уровне ядра который перехватывает, тока этот путь совсем нелёгкий ![]() Это сообщение отредактировал(а) Ak47black - 27.8.2007, 12:39 |
||||
|
|||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Ну дебагером процесса становится. Не этично как то ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |