Межпроцессное взаимодействие на windows
Вопрос
У меня есть скрипт TCL, работающий в Windows. Мне нужно связаться со старым приложением vc ++ 6, работающим в другом процессе. Мне нужно иметь двухстороннее общение. В Linux я бы использовал dbus, но какую стратегию IPC я должен использовать для Windows? Р>
Решение
Tcl в Windows имеет встроенную поддержку dde (см. docs для команды dde), которая может помочь, если другое приложение поддерживает это. Другим вариантом является расширение TWAPI (API-интерфейс Tcl Windows), в котором есть средства для отправки ввода с клавиатуры и мыши в другое приложение, см. 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, а затем использовать stdin и stdout для связи. Если это невозможно, команда сокета Tcl позволяет установить соединение через сокет TCP с другим процессом.
См. здесь для получения подробной информации о первом и < a href = "http://www.tcl.tk/man/tcl8.4/TclCmd/socket.htm" rel = "nofollow noreferrer"> здесь для получения дополнительной информации о сокетах.