У меня есть сценарий TCL, работающий в Windows. Мне нужно связаться со старым приложением vc++ 6, работающим в другом процессе. Мне нужна двухсторонняя связь. В Linux я бы использовал dbus, но какую стратегию IPC мне следует использовать для Windows?
Межпроцессное взаимодействие в Windows
Ответы (6)
Tcl в Windows имеет встроенную поддержку dde (см. документацию по команде dde), которая может помочь, если другое приложение поддерживает это. Другим вариантом является расширение TWAPI (Tcl Windows API), которое имеет средства для отправки ввода с клавиатуры и мыши в другое приложение, см. http://twapi.magicsplat.com/input.html .
Boost.interprocess имеет различные способы, такие как память и передача сообщений для C++. Вы всегда можете начать с этого и посмотреть, что совместимо с вашим сценарием.
Обычные старые сокеты отлично работают в TCL в Windows (и в Linux, и везде, где реализован TCP/IP :)
Список параметров из MSDN: http://msdn.microsoft.com/en-us/library/aa365574(VS.85).aspx
Если вам нужно что-то более «предпринимательское», есть также Очередь сообщений Windows. .
С точки зрения Tcl самым простым способом, если ваше приложение VC6 это позволяет, было бы заставить TCL запустить приложение VC, а затем использовать стандартный ввод и стандартный вывод для связи. Если это невозможно, команда сокета Tcl позволяет вам установить соединение через сокет TCP с другим процессом.
Подробнее о первом и здесь для получения некоторой информации о сокетах.