NAME
       dde - Execute a Dynamic Data Exchange command

SYNOPSIS
       package require dde 1.1

       dde servername ?topic?

       dde ?-async? command service topic ?data?


DESCRIPTION
       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  transaction
       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 messages.
              When the -async option is used, the command returns
              immediately, and no error information is available.

DDE COMMANDS
       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
              service.

       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  command
              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  application-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 currently 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 service 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 interpreter specified by topic.  The  DDE
              service  must be the TclEval service.  This command
              can be used to replace send on Windows.

DDE AND TCL
       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 command.

       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 command,  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.

SEE ALSO
       tk, winfo, send

KEYWORDS
