Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перехват диалоговых окон  (Прочитано 7808 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Rastaman
Гость
« : 03-11-2008 18:11 » 

Привет всем!Друзья, у меня стоит ребром такая задача: перехватить любые диалоговые окна в системе, и на лету подменить своим измененным? Я слыхал о такой вещи как глобальные ловушки, но кавырнуть удалось тока темы касающиеся клавы и мыши Для глухих
А как быть с окнами?Творю на Builder 6 C++, помогите очень прошу! Да-да
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #1 : 03-11-2008 18:20 » 

Rastaman, смотря, какие окна имеются в виду. Если те, которые просто возвращают да-нет-ок-отмена, то перехватить апишную MessageBox
Записан

Rastaman
Гость
« Ответ #2 : 03-11-2008 18:30 » 

ДА!!! Именно этих самих окон <<Да<<Нет<<Не уверен и т.д. ! Подскажите нужную функцию + если можно побольше инфы на эту тему!!!
Записан
zubr
Команда клуба

by
Offline Offline
Пол: Мужской

« Ответ #3 : 04-11-2008 04:49 » 

1. Ставим хук на WH_CBT
2. В хуковом событии ищем окна с классом '#32770', так как все подобные окна имеют класс '#32770'. Используем для этого функцию FindWindowEx. Также возможно понадобится определить заголовок окна - GetWindowText. Возможно еще понадобится определить наличие кнопок в данном окне, для этого можно воспользоваться функцией обратного вызова EnumChildWindows. Поиск делаем по классу 'Button', используя функцию GetClassName.
3. Если нашли нужное окно и хотим его убить - SendMessage с WM_CLOSE
Записан
Micro
Гость
« Ответ #4 : 06-02-2009 15:54 » 

1. Ставим хук на WH_CBT
2. В хуковом событии ищем окна с классом '#32770', так как все подобные окна имеют класс '#32770'. Используем для этого функцию FindWindowEx. Также возможно понадобится определить заголовок окна - GetWindowText. Возможно еще понадобится определить наличие кнопок в данном окне, для этого можно воспользоваться функцией обратного вызова EnumChildWindows. Поиск делаем по классу 'Button', используя функцию GetClassName.
3. Если нашли нужное окно и хотим его убить - SendMessage с WM_CLOSE

Здравсвуйте. Вообще то хук дело конечно "прикольное". Но вот только Касперский или др. антивирус выдаст сообщение "Процесс <Имя процесса> пытается внедрить модуль во все процессы". Для начала найдем окно при помощи функции FindWindowEx. Как функция вернет указатель на окно можно воспользовоться функцией GetWindowParent (могу ошибаться). Если метод не вернет указетель значит это главное окно. Если есть то тогда убиваешь его при помощи Postmessage или SendMessage. Только это лучше делать для конкретного случая. Ато можно поубивать много окон. Улыбаюсь
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 06-02-2009 16:15 » 

Для начала найдем окно при помощи функции FindWindowEx.

По какому событию это надо делать?

Цитата
Как функция вернет указатель на окно можно воспользовоться функцией GetWindowParent (могу ошибаться). Если метод не вернет указетель значит это главное окно.

MessageBox можно вызывать как с указанием родительского окна, так и без такового. И что тогда?

Цитата
Если есть то тогда убиваешь его при помощи Postmessage или SendMessage.

Ну, а дальше? Ведь надо ПОДМЕНИТЬ его на своё, причём с возвращением в точку вызова, а иначе зачем это нужно.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines