dde(n)                       Tcl Built-In Commands                      dde(n)


       dde - Execute a Dynamic Data Exchange command

       package require dde 1.1

       dde servername ?topic?

       dde ?-async? command service topic ?data?

       This  command allows an application to send Dynamic Data Exchange (DDE)
       command when running under Microsoft Windows. Dynamic Data Exchange  is
       a mechanism where applications can exchange raw data. Each DDE transac-
       tion needs a service name and a topic. Both the service name and  topic
       are  application  defined; Tcl uses the service name TclEval, while the
       topic name is the name of the  interpreter  given  by  dde  servername.
       Other  applications  have  their  own  service  names  and  topics. For
       instance, Microsoft Excel has the service name Excel.

       The only option to the dde command is:

       -async Requests asynchronous invocation.  This is valid  only  for  the
              execute  subcommand.  Normally, the dde execute subcommand waits
              until the command completes, returning  appropriate  error  mes-
              sages. When the -async option is used, the command returns imme-
              diately, and no error information is available.

       The following commands are a subset of the full Dynamic  Data  Exchange
       set of commands.

       dde servername ?topic?
              dde  servername  registers  the interpreter as a DDE server with
              the service name TclEval and the topic name specified by  topic.
              If  no  topic  is  given, dde servername returns the name of the
              current topic or the empty string if it is not registered  as  a

       dde execute service topic data
              dde  execute takes the data and sends it to the server indicated
              by service with the topic indicated by topic. Typically, service
              is  the  name of an application, and topic is a file to work on.
              The data field is given to the  remote  application.  Typically,
              the  application  treats  the  data  field  as a script, and the
              script is run in the application. The command returns  an  error
              if the script did not run. If the -async flag was used, the com-
              mand returns immediately with no error.

       dde poke service topic item data
              dde poke passes the data to  the  server  indicated  by  service
              using  the  topic and item specified.  Typically, service is the
              name of an application.  topic is application specific  but  can
              be  a  command  to  the server or the name of a file to work on.
              The item is also application specific and is often not used, but
              it  must  always  be  non-null.   The data field is given to the
              remote application.

       dde request service topic item
              dde request is typically used to get the value of something; the
              value of a cell in Microsoft Excel or the text of a selection in
              Microsoft Word. service is typically the name of an application,
              topic  is  typically  the name of the file, and item is applica-
              tion-specific. The command returns the value of item as  defined
              in the application.

       dde services service topic
              dde  services  returns  a  list of service-topic pairs that cur-
              rently exist on the machine. If service and topic are both  null
              strings  ({}),  then all service-topic pairs currently available
              on the system are returned. If service is null and topic is not,
              then all services with the specified topic are returned. If ser-
              vice is not null and topic is, all topics for  a  given  service
              are  returned.  If both are not null, if that service-topic pair
              currently exists, it is returned; otherwise, null is returned.

       dde eval topic cmd ?arg arg ...?
              dde eval evaluates a command and its arguments using the  inter-
              preter  specified  by topic. The DDE service must be the TclEval
              service.  This command can be used to replace send on Windows.

       A Tcl interpreter always has a service name of TclEval.  Each different
       interpreter of all running Tcl applications must be given a unique name
       specified by dde servername. Each interp is available as  a  DDE  topic
       only  if  the  dde  servername  command was used to set the name of the
       topic for each interp. So a dde services TclEval {} command will return
       a  list  of  service-topic  pairs,  where each of the currently running
       interps will be a topic.

       When Tcl processes a dde execute command, the data for the  execute  is
       run  as  a  script  in the interp named by the topic of the dde execute

       When Tcl processes a dde request command, it returns the value  of  the
       variable given in the dde command in the context of the interp named by
       the dde topic. Tcl reserves the  variable  $TCLEVAL$EXECUTE$RESULT  for
       internal  use,  and  dde  request  commands for that variable will give
       unpredictable results.

       An external application which wishes to run a script in Tcl should have
       that  script  store  its result in a variable, run the dde execute com-
       mand, and the run dde request to get the value of the variable.

       When using DDE, be careful to ensure that the event  queue  is  flushed
       using  either update or vwait.  This happens by default when using wish
       unless a blocking command is called (such as exec without adding the  &
       to  place  the process in the background).  If for any reason the event
       queue is not flushed, DDE commands may hang until the  event  queue  is
       flushed.  This can create a deadlock situation.

       tk(n), winfo(n), send(n)

       application, dde, name, remote execution

Tcl                                   8.1                               dde(n)