Как передать строку из программы в программу?
Модератор: Модераторы
Как передать строку из программы в программу?
Нужен совет, задача из программы А в программу Б передать строку команды с параметрами. На будущее хотелось бы чтобы это не было ОС зависимым решением. Кроме как создать соединение и занять порт с подключением к "127.0.0.1" ничего умнее не могу придумать 
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Re: Как передать строку из программы в программу?
Вызвать программу с данной строкой в параметре.
Копипаст, кстати, кроссплатформенная возможность.
Копипаст, кстати, кроссплатформенная возможность.
Re: Как передать строку из программы в программу?
Лекс Айрин писал(а):Вызвать программу с данной строкой в параметре.
Копипаст, кстати, кроссплатформенная возможность.
1. Программа А и Б запущены, и вызвать - создать новую копию, не имеющую отношения к предыдущей и ее данным.
2. Передавать данные через копипаст кощунство. Это функция для пользователя, а не для сервисов программы.
Re: Как передать строку из программы в программу?
Есть у меня следующая идея, и думаю что эта идея платформонезависима: передавайте строку через DLL. Смысл в том, что бинарный код dll (в винде, но и в линухе, думаю так-же), одинаков для всех программ, загрузивших ее.
Re: Как передать строку из программы в программу?
хм.. а как в linux системах выполняют открытие документов в много документом приложении, когда вместо старта второй программы документ открывается в уже открытой вторым окном?
Под Win это можно через SendMessage реализовать, а так не знаю есть ли аналогичная функция...
Под Win это можно через SendMessage реализовать, а так не знаю есть ли аналогичная функция...
Re: Как передать строку из программы в программу?
Есть TSimpleIPCServer/TSimpleIPCClient из палитры "System".
http://www.freepascal.org/docs-html/fcl/simpleipc/tsimpleipcserver.html
http://www.freepascal.org/docs-html/fcl/simpleipc/tsimpleipcserver.html
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
Re: Как передать строку из программы в программу?
Нужно гуглить interprocess communication. И да, они все платформозависимые (как и сами процессы), хотя есть стандартные.
Навскидку: общая память, пайпы, сообщения ОС, TCP/IP, файловая система.
Навскидку: общая память, пайпы, сообщения ОС, TCP/IP, файловая система.
Re: Как передать строку из программы в программу?
svk12 писал(а):Есть TSimpleIPCServer/TSimpleIPCClient из палитры "System".
ок, посмотрю
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
Re: Как передать строку из программы в программу?
Sharfik писал(а):svk12 писал(а):Есть TSimpleIPCServer/TSimpleIPCClient из палитры "System".
ок, посмотрю
На Windwos в IPCServer событие о появлении сообщении срабатывает автоматически. На Linux нет, там нужно давать команду проверки, не появилось ли сообщение. Для этого, лучше всего в Linux, организовать отдельный поток, в котором по таймеру IPCServer будет проверять входящие сообщения.
Re: Как передать строку из программы в программу?
Можно прописать обработчик с таким кодом :
Код: Выделить всё
Application.OnIdleКод: Выделить всё
{$IFDEF UNIX}
if SimpleIPCServer1.Active then
Self.SimpleIPCServer1.PeekMessage(1,True);
{$ENDIF} 