Страница 1 из 1
		
			
				Как передать строку из программы в программу?
				
Добавлено: 
27.10.2014 17:13:46 
				 Sharfik
				Нужен совет, задача из программы А в программу Б передать строку команды с параметрами. На будущее хотелось бы чтобы это не было ОС зависимым решением. Кроме как создать соединение и занять порт с подключением к "127.0.0.1" ничего умнее не могу придумать 

 
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
27.10.2014 17:42:28 
				 Лекс Айрин
				Вызвать программу с данной строкой в параметре.
Копипаст, кстати, кроссплатформенная возможность.
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
27.10.2014 19:18:47 
				 Sharfik
				Лекс Айрин писал(а):Вызвать программу с данной строкой в параметре.
Копипаст, кстати, кроссплатформенная возможность.
1. Программа А и Б запущены, и вызвать - создать новую копию, не имеющую отношения к предыдущей и ее данным.
2. Передавать данные через копипаст кощунство. Это функция для пользователя, а не для сервисов программы.
 
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
27.10.2014 19:29:50 
				 stanilar
				Есть у меня следующая идея, и думаю что эта идея платформонезависима: передавайте строку через DLL. Смысл в том, что бинарный код dll (в винде, но и в линухе, думаю так-же), одинаков для всех программ, загрузивших ее.
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
27.10.2014 19:34:56 
				 Sharfik
				хм.. а как в linux системах выполняют открытие документов в много документом приложении, когда вместо старта второй программы документ открывается в уже открытой вторым окном?
Под Win это можно через SendMessage реализовать, а так не знаю есть ли аналогичная функция...
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
27.10.2014 23:42:23 
				 svk12
				
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
28.10.2014 00:06:28 
				 Mirage
				Нужно гуглить interprocess communication. И да, они все платформозависимые (как и сами процессы), хотя есть стандартные.
Навскидку: общая память, пайпы, сообщения ОС, TCP/IP, файловая система.
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
28.10.2014 02:44:05 
				 Sharfik
				svk12 писал(а):Есть TSimpleIPCServer/TSimpleIPCClient из палитры "System".
ок, посмотрю 

 
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
28.10.2014 05:35:58 
				 *Rik*
				Sharfik писал(а):svk12 писал(а):Есть TSimpleIPCServer/TSimpleIPCClient из палитры "System".
ок, посмотрю 

 
На Windwos в IPCServer событие о появлении сообщении срабатывает автоматически. На Linux нет, там нужно давать команду проверки, не появилось ли сообщение. Для этого, лучше всего в Linux, организовать отдельный поток, в котором по таймеру IPCServer будет проверять входящие сообщения.
 
			 
			
		
			
				Re: Как передать строку из программы в программу?
				
Добавлено: 
28.10.2014 11:23:14 
				 svk12
				Можно прописать обработчик 
- Код: Выделить всё
 Application.OnIdle
 с таким кодом :
- Код: Выделить всё
   {$IFDEF UNIX}
  if SimpleIPCServer1.Active then
  Self.SimpleIPCServer1.PeekMessage(1,True);
  {$ENDIF}