На всякий случай полезно, если не критично, что это межпроцессное взаимодействие (если требуемая функциональность может быть преобразована в библиотеку DLL, которая и использует, или похожа), вы можете использовать Common Language Runtime для взаимодействия.