The dde services command can hang a Tcl interpreter.
This can occur if the any of top level windows fails to
process it's message queue. A number of such examples
exist and the net effect is to make Tcl look buggy.
It is possible to work around this problem by
re-implementing the dde services command in terms of
raw DDE messaging using SendMessageTimeout. This Win32
API function is present in all versions of the Win32
API and will ensure that we cannot be halted by another
application. (Well - not for this command anyway).
See patch #690354 for the implementation of this fix.