Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запретить показ ShowMessage в другом приложении

490
16 февраля 2008 года
frid-karatel
357 / / 15.09.2007
Приветствую!

Есть такая задачка... Необходимо перехватить и не показывать окно, созданное через функцию ShowMessage()... Программа, в которой необходимо это сделать, написана на BCB 6, таблицу импорта можно получить... Есть некоторые надумки насчет внедрения DLL и подмены этой функции, но вот не знаю куда и что...
3.7K
16 февраля 2008 года
_lobster_
115 / / 10.04.2005
Начну с того, что в WinAPI функции ShowMessage не существует. Эта функция присутствует только в VCL (объявлена в dialogs.hpp). Перехватывать все же тебе придется MessageBoxA или MessageBoxW. Технология называется сплайсингом.
Вообщем вот:
http://wasm.ru/article.php?article=apihook_1
http://wasm.ru/article.php?article=apihook_2
http://wasm.ru/article.php?article=apihook_3
261
16 февраля 2008 года
ahilles
1.5K / / 03.11.2005
ShowMessage вручную создаёт окно кидает на него кнопку и выводит его. Чтобы перехватить ShowMessage надо перехватить функцию CreateWindowEx и если указан соответствующий класс (надо будет его получить экспериментально), то создать окно и сразу же его закрыть (если при создании окна возвращать ошибку и не создавать окно, то функция ShowMessage генерирует исключение, проверено).
490
16 февраля 2008 года
frid-karatel
357 / / 15.09.2007
Цитата: ahilles
ShowMessage вручную создаёт окно кидает на него кнопку и выводит его. Чтобы перехватить ShowMessage надо перехватить функцию CreateWindowEx и если указан соответствующий класс (надо будет его получить экспериментально), то создать окно и сразу же его закрыть (если при создании окна возвращать ошибку и не создавать окно, то функция ShowMessage генерирует исключение, проверено).


а есть какие-нибудь наметки кода? чтобы не с нуля писать...? :rolleyes:

261
17 февраля 2008 года
ahilles
1.5K / / 03.11.2005
Цитата: frid-karatel
а есть какие-нибудь наметки кода? чтобы не с нуля писать...? :rolleyes:


к сожалению сейчас их уже нет. Мне кажется лучше перехватывать не с помощью перехвата функций, а с помощью обычных хуков в своём процессе (в таком случае DLL не нужна), тип хука WH_CBT, код сообщения HCBT_CREATEWND.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог