как перехватить messagebox? | |
---|---|
AlexSSS Автор Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
на старом проекте на vfp9 сейчас проходит перевод интерфейса на другой язык
собственно с интерфейсом проблем нет, уже написаны классы, которые переводят интерфейс на английский (проход по всем объектам на форме и перевод caption) Но в программах множество messagebox. приходится перелопачивать весь код, чтобы в тексте перед messagebox вставить функцию перевода. вопрос - а нет ли возможности как-то перехватывать все messagebox, подменять текст и отправлять его дальше? |
Re: как перехватить messagebox? | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Code Reference + замена не помогает?
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: как перехватить messagebox? | |
---|---|
Chemberzhy Сообщений: 13142 Откуда: Измаил Дата регистрации: 28.04.2009 |
Можно вообще листинг прошерстить простейшей процедуркой с целью выявления любых кириллических символов и походу переводить, можно даже подключив ГугТранлятор ;)
------------------ Что-то с памятью моей стало, всё что было не со мной- помню. |
Re: как перехватить messagebox? | |
---|---|
прошелмимо Сообщений: 784 Дата регистрации: 21.02.2012 |
Оберните команду mess.. в программу/класс
Вызывайте с параметром код/номер сообщ. Можете их доп.сгруппировать по типам... (О чем/про что) Аля сап ерпи. Далее в завис от языка читаете в табличке Рус/англ/..текст Выводите Во всех местах прям команду mess Меняете на вызов прогр/подъем объекта Исправлено 1 раз(а). Последнее : прошелмимо, 10.10.18 12:21 |
Re: как перехватить messagebox? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет. Но можно поиском и заменой заменить все "messagebox" на "messagebox_loc" (поиск по "слову целиком") и уж в своей функции делать всё что заблагорассудится Да, если код написан "как обычно", то ещё придётся искать "messagebo" и "messageb". Ну и стандартная беда с макро и прочим динамическим кодом - эту хрень уже не победить без написания собственного препроцессора и замены всех макро/execscript на вызов этого препроцессора (проще забить - пусть не локализуется в этих местах)... ------------------ WBR, Igor |
Re: как перехватить messagebox? | |
---|---|
AlexSSS Автор Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
всем спасибо
перехватить невозможно. а как заменить - это было понятно |
Re: как перехватить messagebox? | |
---|---|
AlexSSS Автор Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
Спасибо, раньше с ним не работал, писал код для замены сам. удобный инструмент |
Re: как перехватить messagebox? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Перехватить то возможно - но не нужно. Это слишком грубый хак.
------------------ WBR, Igor |
Re: как перехватить messagebox? | |
---|---|
of63 Сообщений: 25251 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
(эти системные сообщения всплывают посередине экоана компа, а не посередине приложения фокса. Из-за это го их пришлось просто выбросить )
youtu.be - хз |
Re: как перехватить messagebox? | |
---|---|
AlexSSS Автор Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
Уже наваял код, который открывает все SCX как таблицы и заменяет в поле methods mesagebox( на мою процедуру.
Небольшая тонкость - после этого форму надо перекомпилировать через COMPILE FORM не открывая в дизайнере, иначе границы процедур сместятся. Исправлено 1 раз(а). Последнее : AlexSSS, 11.10.18 23:47 |
Re: как перехватить messagebox? | |
---|---|
of63 Сообщений: 25251 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
после "этого" все наши "штатные" messagebox будут координироваться где? Только не говори, что "все там же"
|
Re: как перехватить messagebox? | |
---|---|
AlexSSS Автор Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
в смысле координироваться? на формах вместо стандартного messagebox я проставил thisform.oCommon.MsgBox (мне в процедуру перевода надо передавать имя формы, так ее получить проще). Класс oCommon есть на всех формах. Так что код моего MsgBox прописан в одном месте |
Re: как перехватить messagebox? | |
---|---|
of63 Сообщений: 25251 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Свой "messagebox" я написал, и могу указать координаты на экране любые. Я имел ввиду системный, нативный фоксовый MESSAGEBOX, ему координаты как указать бы, где он появится. Да это не важно. Действительно, пишешь подпрограмму типа MESSAGEBOX, и все дела. Вопрос о движении виндового окна MESSAGEBOX чисто "академический".
|
Re: как перехватить messagebox? | |
---|---|
прошелмимо Сообщений: 784 Дата регистрации: 21.02.2012 |
Ежели про стилистику, вкус и цвет..
MESSAGEBOX зло + там жешь вроде было даже, кажется Время, на которое ждать, потом снимать.. (пример тупизма: наложил блокировку, не снял, месседж..) В последнее время делал интерфейсы с выводом Лога сообщений в отдельном окне. В одинэсе также вроде, кажется... В сапе сообщение с разным типом ОШИБКА КРАСНОЕ, ЖЕЛТОЕ.., ЗЕЛЕНОЕ.. проблымывают в тулбар. Инфо сообщение отображают редко. |
Re: как перехватить messagebox? | |
---|---|
прошелмимо Сообщений: 784 Дата регистрации: 21.02.2012 |
+ в сапе тоже есть списки сообщений
Тарабанит алгоритм, куча проверок и сообщений Если на каждое ждать и светить пользователю, И он будет жмакать ок, То это пиндец, извините. Тарабанит прога, сообщения летят в коллектор, Потом светится семафор,результат, Если юзвер хочет, -смотрит лог.... |
Re: как перехватить messagebox? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну, надо быть особо
А так то они есть в любых ситсемах, но для совершенно определённой цели - получение реакции пользователя (а никак не его "уведомление" о том что что-то там произошло/стартовало/завершилось и т.п.). Таймаут - ну если сообщение с одной стороны требует реакции, а с другой стороны, если негодник ушёл пить чай на пол-дня, то чтобы подвисшее сообщение не блокировало работу системы (всякие автовыгонялки из программы - первое что на ум приходит). ------------------ WBR, Igor |
Re: как перехватить messagebox? | |
---|---|
of63 Сообщений: 25251 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Представь, ты запустил ДВЕ одинаковые программы, немного разнес на рабочем столе. И эти проги начинают сообщать при помощи MESSAGEBOX. Вопрос - как поместить окно МЕССАГЕБОКС в центр проги, ее вызвавшей
|
Re: как перехватить messagebox? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
А как ты вообще различать будешь "две одинаковые программы"? Ну если они таки совсем одинаковые, и даже в заголовке окна не пишут ничего "различающегося"
И если так, то не пофиг ли тебе, какой из "одинаковых messagebox-ов" тискать А так - ну при помощи хука можно "подвинуть" и системный MessageBox - если очень уж хочется ------------------ WBR, Igor |
Re: как перехватить messagebox? | |
---|---|
of63 Сообщений: 25251 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Ничево смешнова! )
Запускаются действительно 2 копии одной программы (или много). Это делается для одновре5менного выполнения в них некой "статистики", например .пож 3 и под 5 процентов ключевой ставки. В заголовке окна они одинаковые (а что, кто-то заморачивается по поводу переназвания окна проги?, сомневаюсь)... Просто хочется знать |
Re: как перехватить messagebox? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ещё раз по простому - если разраб не в состоянии обеспечить точную идентификацию "2 запущенных копий программы" (если это соответствует бизнес задаче - т.е. заранее предполагается запуск 2-3 или 100500 копий, как, к примеру, офисные программы работают), а потом ещё и обеспечить идентификацию их внутренних окон - как диалоговых так и всех прочих, то он зря кушает свой хлеб.
Размещение всего "внутри главного окна" это лишь один из вариантов решения вопроса "связывания воедино" разных окон относящихся к одному экземпляру программы - довольно распространённый но далеко не единственнный. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |