![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| fridkaratel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 22.10.2007 Где: Error connect to MySQL Da... Репутация: нет Всего: нет |
Описание:
Имеется программа, к которой подлючен мой DLL. Программа иногда инфоррмирует пользователя, например, о завершении какого-либо действия. Я написал DLL, которая избавила бы пользователя от надоедливых окошек и выводила все сообщения на мою форму в виде отчетов. Задача: Как запретить показ окон сообщений, как через ShowMessage(), так и через Application->MessageBox, т.е. перехватывать их, узнавать выводимое сообщение, но не показывать на экран... |
|||
|
||||
| FREEDEV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 6.3.2007 Где: Украина->Одесс а Репутация: нет Всего: 3 |
попробуй обработать WM_NOTIFY Message в PreTranslateMessage
или воспользуйся макросом ON_NOTIFY --------------------
Microsoft Windows Visla © |
|||
|
||||
| fridkaratel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 22.10.2007 Где: Error connect to MySQL Da... Репутация: нет Всего: нет |
||||
|
||||
| FREEDEV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 6.3.2007 Где: Украина->Одесс а Репутация: нет Всего: 3 |
--------------------
Microsoft Windows Visla © |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
падчить ?) благо DLL способствует ) переносимость ниже плинтуса, но тоже вариант)
P.S. мне кажется речь шла вообще о Builder-е .... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| fridkaratel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 22.10.2007 Где: Error connect to MySQL Da... Репутация: нет Всего: нет |
Я немного знаком с MFC... этот вариант поможет когда есть исходники приложения. Исходников приложения нет, поэтому вряд ли это подойдет...
Мне надо, чтоб MessageBox'ы, создаваемые приложением стороннего разработчика не появлялись. Стоит ли вообще обрабатывать оконные сообщение? Ведь они к окну приходят? Подробное описание задачи: есть программа стороннего разработчика. Исходников от нее нет, к тому же она запакована пакером Themida... Она постоянно показывает разны сообщения как через ShowMessage(), так и через Application->MessageBox()... Они появляются очень часто и надоедают... Я хочу написать DLL и все эти сообщения перехватывать, т.е. не показывать, а записывать, ну скажем, в файл... или куда еще - не важно... Главное - знать, что на них написано, чтобы обработать ту информацию, которую эти сообщения передают... |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
тогда 99% падчить код (это можно сделать прямо длл-кой область та одна будет - благодать)...Т.е. найти импорт и направить его на внетрении функции DLL-ки, вообще говоря не должно быть архисложной проблемой...
например так (только поставить соотв. права на запись не забыть, а то Access vialation whan write полчимс)
ну и вообще почитайте про подмену функций путем внедрения длл в процесс 8) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| fridkaratel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 22.10.2007 Где: Error connect to MySQL Da... Репутация: нет Всего: нет |
ок, почитаю... а есть еще варианты какие-нибудь?
Это сообщение отредактировал(а) fridkaratel - 9.11.2007, 07:33 |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Перехватывай функции MessageBoxA, MessageBoxW, CreateWindowExA, CreateWindowExW.
При работе ф-ции ShowMessage создаётся окно, класса TMessageForm. Убираешь стиль WS_VISIBLE, создаёшь окно. Хендл окна используешь в своих целях, т.е. можешь получить класс TForm и найти TLabel (если он там есть) и оттуда текст. Потом ищешь кнопку OK и нажимаешь. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |