Самый простой способ сделать удаленные вызовы между программой на C ++ и .NET - PullRequest
1 голос
/ 07 сентября 2011

У меня работает программа .NET в фоновом режиме, и мне нужно создать расширение Windows Shell, которое может взаимодействовать с этой программой.Сначала я подумал, что создам расширение Shell в .NET и использовал IpcServerChannel и IpcClientChannel для удаленных вызовов между сервером (программа .NET) и клиентом (расширение оболочки .NET).Это было очень просто сделать и работало очень быстро.

Теперь я понимаю, что создание Shell Extension в .NET не такая хорошая идея, так как в некоторых случаях она может не загружаться (если .NET 1.0Например, расширение Shell будет загружено первым).Я думаю, что тогда я мог бы пойти по пути C ++, но в таком случае есть ли простой способ заставить мое расширение оболочки C ++ делать удаленные вызовы моей .NET-программы?Или у вас есть другая идея, чтобы заставить мои две программы взаимодействовать (я бы предпочел, чтобы мне не приходилось разрабатывать протокол связи и я мог просто заскочить в библиотеку).

Спасибо!

1 Ответ

1 голос
/ 07 сентября 2011

Ну, вы можете попробовать SendMessage(WM_COPYDATA).

Но тогда, если вы увлечены им, было бы гораздо более расширяемым (и поддерживаемым) сделать только именованный канал или локальный сокет inet.На самом деле, разработка протокола связи не так сложна, как кажется: просто отправьте сериализованную структуру с параметрами и дождитесь сериализованного ответа.Затем обработайте таймауты и ошибки форматирования, и готово!

...