Каков наилучший способ передачи информации из приложения C # в приложение C ++ во время их работы? - PullRequest
2 голосов
/ 13 февраля 2009

Каков наилучший способ передачи информации из приложения C # Windows Forms в приложение MFC C ++ во время их работы? Мне не нужно много отправлять, только небольшая строка.

Спасибо, Джефф

Ответы [ 4 ]

4 голосов
/ 14 февраля 2009

Переход по списку параметров IPC:

  • Отображенные в память файлы. Легко в C ++, жестко в C # без указателей, неудобное рукопожатие
  • WM_COPYDATA. Легко в обоих, сложно найти ручку окна, которая вам понадобится
  • Буфер обмена. Легко в обоих, очень неловкое рукопожатие
  • COM. Out-of-proc - зверь, забудь об этом
  • почтовые слоты. Не подходит для индивидуального общения
  • Трубы. Легко в .NET 3.5, выполнимо в C ++, но немного сложно получить право
  • Sockets. Легко в обоих, трудно пройти.
3 голосов
/ 13 февраля 2009

Использовать именованные каналы, см. публикацию .

0 голосов
/ 13 февраля 2009

MailSlot api небольшой и простой, но требует использования P / Invoke из c # и может выходить за пределы вашего локального компьютера, поэтому требует осторожности. см. мой ответ здесь

Именованные каналы могут быть более надежными, но это альтернатива.

0 голосов
/ 13 февраля 2009

Если в приложении C ++ есть главное окно, обратите внимание на использование функции SendMessage (через P / Invoke) в приложении C # для отправки сообщения WM_COPYDATA в приложение C ++.

http://msdn.microsoft.com/en-us/library/ms649011%28VS.85%29.aspx

...