Некоторой программой во время её работы выдаётся
сообщение типа MessageDlg или ShowMessage.
Существует ли возможность перехватить вызовы этих
функций и отменить показ сообщения.
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
18-10-2004 23:07
Да, если это месадждиалог...
А если это пользовательский диалог????
Тогда ж это форма будет! Я в этом смысле...
Дельфи для функций MessageDlg или ShowMessage использует собственные методы создания диалогов, так что на API функцию показа мессаджбокса нельзя. На WM_INITDIALOG можно!
Не помню точно какая, но есть утилитка, которая показывает, от какого класса унаследован объект под мышью.
Утилита из состава Microsoft Visual Studio: Microsoft Spy++
Оконный класс имеет имя TMessageForm.
Да. Можно использовать хук. Если, конечно ты точно знаешь, что это стандартный виндовый диалог. Тогда перед показом диалога появляется сообщение WM_INITDIALOG. Ловишь сообщение, и не пропускаешь дальше в очередь сообщений.
Проблемка-то в том, что диалоги могут быть формой... Тогда ловить надо по WM_NCCREATE. Если знаешь, какого типа дилог, от какого класса унаследован - то карты в руки. Не помню точно какая, но есть утилитка, которая показывает, от какого класса унаследован объект под мышью. В принципе, можешь и сам написАть - используя потоки:)))
Надеюсь, поможет:)))
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.