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

Ваш аккаунт

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

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

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

Связь приложений

4.5K
01 ноября 2006 года
StranikS
44 / / 03.02.2005
Доброго время суток!

Я пишу MDI-приложение. Расширение файлов, обрабатываемых приложением, регистрируется в ОС и ассоциируется с ....exe. В событии OnShow главной формы приложения имеется обработка параметров загрузки. Таким образом двойной клик на файле -> запуск КОПИИ приложения и автоматическая обработка его содержимого реализованы (в добавок реализован и Drag&Drop файлов).

Но пользователю можно работать только с одной копией программы (мне так нужно), поэтому в событии OnCreate главной формы стоит поцедура, которая ищет запущенную копию приложения по заголовку Application.Title и если находит, то ПРЕРЫВАЕТ свою работу и активизирует найденный оригинал. Следовательно, если в параметрах загрузки был адрес файла, то он теряется и "загрузки" файла в работающий оригинал приложения не происходит.

1. Что делать?

Лично, я решил, что нужно его передавать (пересылать) в работающий оригинал приложения. И воспользовался событием WM_COPYDATA для этого.

Но тут опять подводный камень - WM_COPYDATA работает с заголовками окон. В моем случае это заголовок главной формы. Если в работающем оригинале приложения пользователь не запустил дочернего окна, то заголовок = MainForm.Caption, но если запустил, то = MainForm.Caption-[MDIChild.Caption]. Конечно при условии, что дочернее окно развернуто полностью. В результате WM_COPYDATA не может послать сообщение правильному адресату, т.к. копии приложения MDIChild.Caption - неизвестно.

2. А что делать в этом случае?

3. Кто как решил эти проблемы?
8.4K
02 ноября 2006 года
Dian
91 / / 18.02.2006
Данные ведь можно не только через WM_COPYDATA пересылать
547
02 ноября 2006 года
Hydra
488 / / 20.06.2006
см. CreateMutex, OpenMutex
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог