I have a TCL script running on windows. I need to communicate to a old vc++ 6 app running in a different process. I need to have 2 way communication. In Linux I would use dbus, but what IPC strategy should I use for windows?
Boost.interprocess has various ways such as shared-memory and message passing for C++. You could always start there and see what is compatible with your script.
A list of options from MSDN : http://msdn.microsoft.com/en-us/library/aa365574(VS.85).aspx
If you want something more 'enterprisy', there's also Windows Message Queue.
Plain old sockets work great in TCL on Windows (and Linux, and everywhere TCP/IP is implemented :)
From the Tcl perspective the simplest way, if your VC6 app allows it, would be to get TCL to start the VC app and then use stdin and stdout to communicate. If that's not possible the the Tcl socket command allows you to establish a TCP socket connection with another process.
See here for details of the first and here for some info on sockets.
Tcl on windows has dde support built-in (see docs for the dde command) which could help if the other application supports this. Another option is the TWAPI (Tcl Windows API) extension, which has facilities for sending keyboard and mouse input to another application, see http://twapi.magicsplat.com/input.html .