| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Передача данных другому приложению |
| Автор: former 2.7.2007, 08:51 | ||
Есть два приложения. Оба написаны мной.Первое приложение вызывает второе и должно передать значение некоторой переменной. Второе в свою очередь, если запускается отдельно, имеетстартовое окно (в событии onActivate главной формы) в котором выбираеся действие. Задача сосотоит в том, чтобы при запуске первым приложением второго стартовое окно не показывалось. Что-то типа следующей конструкции (я думаю):
Или есть другой метод? Как реализовать передачу значения этой переменной? |
| Автор: Rennigth 2.7.2007, 08:58 |
| former, А чем командная строка не устраивает? |
| Автор: former 2.7.2007, 09:01 |
| Rennigth, поточнее, что ты имеешь виду? |
| Автор: Alexeis 2.7.2007, 09:06 |
SendMessage(); |
| Автор: Rennigth 2.7.2007, 09:08 | ||||
Хм, то и имею. Сделай чтобы первое приложение запускало второе с параметром например:
А во втором приложении анализировать ParamStr;
|
| Автор: former 2.7.2007, 09:31 | ||||||
| Rennigth, спасибо за подсказку. Все получилось. Только в твоём коде кое-чего не хватает: 1.
2.
Так я думаю будет лучше. А вариант какой лучше или надёжнее, Rennigth или Alexeis? Добавлено через 2 минуты и 7 секунд PChar написал, т.к. использовал следующую конструкцию:
|
| Автор: Rennigth 2.7.2007, 09:40 |
Ну писал как наводку Мне кажется что в данном случае не целесообразно изобретать велосипед с SendMessage-м и WM_COPYDATA и т.д. когда для этого механизм передачи параметров через командную строку и служит. |
| Автор: former 2.7.2007, 09:59 | ||
| Rennigth, Alexeis, спасибо за ваши рекомендации. Постараюсь разобраться и со вторым вариантом тоже. И на последок.
Т.е., если я правильно понял, если система перегружена процессами, то неизвестно вовремя ли произойдёт передача параметров? |
| Автор: Alexeis 2.7.2007, 10:18 | ||
Ага, сообщения обрабатываются асинхронно, но в порядке их поступления. |
| Автор: Rennigth 2.7.2007, 10:20 | ||||
Ну да. К примеру если использовать вариант с передачей параметров через SendMessage:
Вообщем чтобы пользоваться этим вариантом придется изобретать еще и велосипед с ожиданием приема параметра во втором приложении и ожиданием возможности отправки передачи параметра у первого. |
| Автор: former 2.7.2007, 10:23 |
| А приоритет сообщения менять никак нельзя? |
| Автор: Rennigth 2.7.2007, 10:34 |
Чтобы это могло значить? Приоритет есть у процессов и потоков. Если ты имеешь ввиду как можно побыстрее прогнать очередь сообщений для какогото окна... То это исключительно зависит от загружености процесса. Сообщения он принимает грубо говоря в Idle, или можно в принимающем приложении вызвать Application.ProcessMessages. Но ситуцию это все равно не изменит. В данном случае используй передачу параметра через командную строку. |
| Автор: former 2.7.2007, 11:06 |
| Всем спасибо. Тема закрыта. |
| Автор: MetalFan 2.7.2007, 12:54 |
| можно мое имхо? все-таки на то оно и WM_COPYDATA, чтобы данные между процессами передавать... а вот с ком.строкой как раз изврат. |
| Автор: Alexeis 2.7.2007, 13:06 | ||
В данном случае с командной строкой как раз красиво. Суть в том что прога может запускаться с ярлыка либо другой прогой. В зависимости от параметров командной строки меняется режим работы самой проги. Это нормальная практика. Да и сама делфи поддерживает различные параментры. В данном случае вопрос не в том чтобы обеспечить взаимодействие двух приложений, а именно установить нужный режим работы. |
| Автор: former 2.7.2007, 14:46 |
| Alexeis, в самую точку! Спасибо. + |