Re: как перехватить messagebox? | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Значит я зря кушаю свой хлеб
|
Re: как перехватить messagebox? | |
---|---|
krin Сообщений: 172 Дата регистрации: 08.02.2005 |
Herman Tan's Blog Centering / Customize VFP MessageBox in any Form hermantan.blogspot.com |
Re: как перехватить messagebox? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это, конечно, не хук, но по крайней мере сей вариант обходится без сишных/ассемблерных вставок
------------------ WBR, Igor |
Re: как перехватить messagebox? | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Не понял про офисные программы (типа Экселя, например). Они как раз не дают открыть один и тот же файл, кричат, что уже открыт. И не дают открыть два одинаковых файла, которые лежат в разных директориях. Непонятный отсыл к "офисным" прогам. И про "обеспечить точную идентификацию 2 запущенных копий программы", HWND обеспечивает, сама же винда. И я могу дообеспечить, что-нибудь уникальное положить в какое-нибудь свойство _VFP, и что мне дальше делать с этим свойством... Где-то я читал про ID процесса, и поиска его родителя, в винде (ведь в ней у каждого окна есть свой ИД? и у каждого из них есть окно-родитель?). Думал, что все этим пользуются каждый день, или через день ) Вобщем, суть такая: - я запускаю фоксовое приложение EXE - из него запускаю такое-же приложение EXE (или просто нативный MESSAGEBOX) - как найти второе приложение из первого, запущенное первым же! Ссылку с кодом на фоксе посмотрел, и ничего не понял ("нам бы схемку иль чертеж" ), в ссылке не по-нашему, и много строк. Идея то вроде должна в АПИ просто поддерживаться, чтобы строить дерево ИД процессов, чтобы знать кто кого запустил, и корневой ИД фокс может знать наверняка, и были эти коды давно на форуме (или что-то похожее). И не на ассемблере/Си вроде, а на АПИ (вроде) Ладно, это не нужно, на самом деле, для удовлетворения эльки, это для операторов, а они и так перебьются. Скажешь им, что "зажгется лампа красная - нажми кнопку черную", они и удовлетворятся ) |
Re: как перехватить messagebox? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Вполне понятный - они не дают юзеру поставить себя в такой тупик - всегда видно что за документ в работе - в заголовке окна к примеру. Никаких HWND пользователь не видит. А окна, в т.ч. и их заголовки - вполне. Зачем? Не вижу смысла всего этого. Для связывания того же MB с вызвавшим его "окном приложения" можно не только "центрировать MB в окне" - что делается несколько замороченно - вполне достаточно в заголовке MB повторить заголовок окна твоего приложения. Естественно чтобы это работало, твоё приложение должно на каждый параллельный запуск делать уникальный заголовок - и тут как раз ворд тебе в пример. Да, он не запретит открыть "письмо 1239-8764-5а от 16.10.18" одновременно с "письмо 1239-8674-5а от 16.10.18", но по крайней мере пытается идентифицировать разные копии (не суть важно что процесс там обычно один, но окна верхнего уровня таки разные). Да, в мультимониторной конфигурации всё уже несколько хуже - "подчинённый" диалог показанный на "другом экране" не очень хорошее UI решение... Хотя бывают разные случаи Увы, ничем не могу помочь в данном случае. Замечу лишь что никаких "деревьев процессов" и "кто кого запустил" там нет от слова вообще. Банально окна ловятся в рамках одного процесса - ну так чего и хотели ж ------------------ WBR, Igor |
Re: как перехватить messagebox? | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> вполне достаточно в заголовке MB повторить заголовок окна твоего приложения
Я тебя понял. Мы живем в разных мирах ) > Для связывания того же MB с вызвавшим его "окном приложения" можно не только "центрировать MB в окне" - что делается несколько замороченно - вполне достаточно в заголовке MB повторить заголовок окна твоего приложения. Исправлено 3 раз(а). Последнее : of63, 17.10.18 08:46 |
© 2000-2024 Fox Club  |