![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Такой вопрос: запущены две копии одной и той-же программы с разными параметрами коммандной строки:
1. c:/app.exe /strings_1 2. c:/app.exe /strings_2 Как из второй программы, которая запущена позже, передать данные коммандной строки в первую программу? -------------------- ![]() |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
1) Через буфер обмена
2) Через пересылку сообщений 3) Через DDE 4) Через OLE -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| aktuba |
|
||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
1. Буфер обмена не подходит, т.к. не очень хорошо портить данные пользователя.
2. Сообщения - то, что надо. Но у меня мало опыта в этом. Как с помощью сообщений передать строку? 3 и 4. Не знаю... Вообще никогда с этим не работал. Может это лучше чем сообщения? Есть примеры? Добавлено @ 22:21 в DelphiWorld нашел пример: получатель:
отправитель:
А еще какие есть способы? -------------------- ![]() |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
В NT системах, можно и не портить. Там можно сколько угодно объектов пихать, и так же вытаскиать. С сообщениями принцип таков. Регистрируется сообщение с номером WM_USER + N, где N некоторое число. Строка разбивается на слова по 4 байта и слова записываются в Lparam и wParam. В программе приемнике пишется обработчик который их собирает в строку. Добавлено @ 22:34 DDE уже устарело, но служит именно для этой цели. Про него можно прочитать во многих книгах. OLE довольно сложная технология требующая создания сервера и клиента. Подключение можно производить динамически. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Почему? Я вроде такое тоже встречал, вот только сейчас не могу найти. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нельзя передать между приложениями.
Внутри одного процесса можно. Между процессами - нет. У них области памяти разные. Для этого и придумана WM_COPYDATA - для упрощения процесса. Она создаёт MM файл, копирует туда данные, передаёт другому процессу, ждёт возврата, уничтожает MM файл. Специальное сообщение - чтобы всё это руками не делать. Добавлено @ 23:14 Ага. Не дочитал твой вариант до конца. Так конечно тоже можно. Но это нерациональный вариант. WM_COPYDATA куда проще. Добавлено @ 23:24 А вот и готовый примерчик: http://forum.vingrad.ru/index.php?showtopi...st&p=642109 |
|||
|
||||
| Sansa |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 18.10.2006 Где: Королев Репутация: 3 Всего: 6 |
В JVCL есть модуль JvAppInst.pas. В нем реализован компонент, который определяет, одна ли копия приложения запущена, и что делать, если их несколько.
--------------------
- Здравствуйте, я Ваш патологоанатом |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
Анонимные пайпы Глобальные атомы Мэилслоты Ну и именованые Memory Mapped File регионы(что кстати и использует WM_COPYDATA) Но в обычных рядовых ситуациях конечно WM_COPYDATA очень хорошо подходит. |
|||
|
||||
| Gawron |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.9.2008 Репутация: нет Всего: нет |
Стандартные средства для работы с DDE в Делфи позволяют передавать типы PChar и TStrings. А как можно организовать передачу данных другого типа через DDE (а именно: массив чисел типа Integer или Real)? Есть ли какие-либо компоненты для работы с DDE, позволяющие организовать такую передачу?
|
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Gawron, а новый пост создать не судьба, вместо того, чтобы поднимать пост 2006-го года?
-------------------- ![]() |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
aktuba, все нормально. Вопрос по теме. Зачем плодить сущности.
Gawron, PChar это ж просто указатель на буфер в памяти. Туда можно записать все что хош -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Gawron |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.9.2008 Репутация: нет Всего: нет |
Спасибо. А не будет никаких сбоев, если к общему массиву (целых чисел) будут обращаться сразу два разных приложения?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Если только читать, то проблем быть не должно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |