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

Ваш аккаунт

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

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

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

Запрет показа сообщений ShowMessage() и др.

490
07 ноября 2007 года
frid-karatel
357 / / 15.09.2007
Описание:
Имеется программа, к которой подлючен мой DLL. Программа иногда инфоррмирует пользователя, например, о завершении какого-либо действия. Я написал DLL, которая избавила бы пользователя от надоедливых окошек и выводила все сообщения на мою форму в виде отчетов.

Задача:
Как запретить показ окон сообщений, как через ShowMessage(), так и через Application->MessageBox, т.е. перехватывать их, узнавать выводимое сообщение, но не показывать на экран...
2.9K
07 ноября 2007 года
Ation
96 / / 27.07.2004
Как я понял, в конечном итоге надо избавить от MessageBox-ов. И если твоя длл уже в пространстве процесса, так просто перехвати MessagBoxA и MessageBoxW и все. О том как это сделать гугли перехват АПИ функций, или сразу сходи на http://www.wasm.ru/publist.php?list=21
490
08 ноября 2007 года
frid-karatel
357 / / 15.09.2007
а где именно искать? :) перехожу на страницу со списком статей... вроде как этот сайт по АСМ, а я на CBuilder 6 сделал все... мне и надо написать на C++ DLL, которую я встрою. к другой программе и перехвачу сообщения...

TApplicationEvent сможет такое сделать?
2.9K
08 ноября 2007 года
Ation
96 / / 27.07.2004
говорю еще раз, тебе надо искать статьи по
перехвату апи функций. в частности MS-REMа. В первой статье цикла вроде был пример перехвата именно MessageBox-ов. Одно хочу подчеркнуть, тебе не надо создать никаких хуков, так как твоя длл уже в аддрессном пространстве целевой программы. Не поймешь там, гугл тебе в руки, материало про это просто немеряно.
490
08 ноября 2007 года
frid-karatel
357 / / 15.09.2007
а как такой вариант:
Код:
BOOL ТвойКласс::PreTranslateMessage(MSG* pMsg)
{
switch(pMsg->message)
{
case WM_NOTIFY:
MessageBox("Сообщение получено!");
break;
}

return CDialog::PreTranslateMessage(pMsg);

}


?
2.9K
08 ноября 2007 года
Ation
96 / / 27.07.2004
Насколько я знаком с MFC, то это вариант, имхо, поможет когда есть исходники приложения. Исходниковприложения как я понял нет, значит чего ты этим добьешся я наверно просто не догоняю :)
Как я понял, тебе надо, чтоб MessageBox создаваемые приложением не появлялись. Если это так, то тем более, нафига тебе обрабатывать оконные сообщение? Ведь они к окну приходят?
Кароч, если я чего не так понял, скажи конкретно, что у тебя есть, и чего ты хочешь добиться? ибоя запутался совсем %)
490
08 ноября 2007 года
frid-karatel
357 / / 15.09.2007
есть программа стороннего разработчика. Исходников от нее нет, к тому же она запакована пакером Themida... Она постоянно показывает разны сообщения как через ShowMessage(), так и через Application->MessageBox()... Они появляются очень часто и надоедают... :)

Я хочу написать DLL и все эти сообщения перехватывать, т.е. не показывать, а записывать, ну скажем, в файл... или куда еще - не важно... Главное - знать, что на них написано, чтобы обработать ту информмацию, которую эти сообщения передают...
2.9K
09 ноября 2007 года
Ation
96 / / 27.07.2004
Что за ShowMessage я не знаю :/
А для MessageBox все написано в первом посте.
Итого, тебе надо загрузить длл в процесс, для этого в инициализации длл ставишь глобальный хук (читай про SetWindowsHookEx).
в нужном процессе (ну там по имени его идентифицируешь или еще как) ставишь хук (как - читай статьи MS-REMa на васме) на MessageBoxA MessageBoxW. Тогда все вызовы этих функций будут приходить в твою функцию, а там выдираешь из параметров что хочешь и возвращаешь нужный результат без вызова оригинального MessageBox-а.
Как это сделать, я тебе писать на форуме не буду, потому-что информации полно, чть искать я уже говорил.
Если не поможет, то значит прога создает свои диалоговые окна. Как в таком случае быть, тоже можно найти в нете.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог