2009-04-16 4 views
2

У меня уже есть приложение, называемое «старым», которое отображает изображение, в котором данные изображения хранятся в форме сеанса, и мне нужно прочитать эти данные из этого существующего «старого» приложения в приложение «новое».Как обмениваться данными между приложениями?

Как передать эти данные? Нужно ли мне получить адрес памяти сеанса и передать его другому моему приложению?

И даже если у меня есть адрес памяти, как я могу прочитать все данные? Он содержит множество данных.

Именованные трубы и все остальные создают связь между двумя процессами и когда один процесс записывает в память, другой процесс читает его.

Но у меня есть адрес памяти одного процесса в качестве ввода, не единственное, что мне нужно сделать, это просто прочитать данные из этого адреса памяти из другого процесса?

ответ

4

У вас есть довольно много вариантов для обмена данными между двумя процессами

  • сохранить данные в файл и читать, если из другого приложения
  • Используйте named pipe установить соединение
  • Используйте named shared memory созданный с использованием вызовов win32 API
  • Использование общего пользования memory area within a DLL, загруженное с обоих приложений
0

Учитывая склонность вашего вопроса, я бы предложил предложение по названию по имени @ shoosh по имени. Я использовал это раньше для изображений с камер и так хорошо.

1

Поскольку вы используете C++, я настоятельно рекомендую вам взглянуть на Boost interprocess. Он обеспечивает хороший независимый от платформы доступ к межпроцессной коммуникации, где большинство утомительных и подверженных ошибкам деталей низкого уровня защищены от вас.

Смежные вопросы