NAME
       dde - Execute a Dynamic Data Exchange command

SYNOPSIS
       package require dde 1.2

       dde eval ?-async? service cmd ?arg ...?

       dde execute ?-async? service topic data

       dde poke service topic item data

       dde request ?-binary? service topic data

       dde servername ?topic?

       dde services service topic


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 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 eval and execute commands accept the option -async:


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 ?-async? 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  -async  option  requests
              asynchronous  invocation.   The command returns an error message
              if the script did not run, unless the -async flag was  used,  in
              which case 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 ?-binary? 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.  Normally this is interpreted to be a string
              with  terminating  null.  If -binary is specified, the result is
              returned as a byte array.

       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 ?-async? 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.   The  -async  option requests asynchronous invocation.
              The command returns an error message if the script did not  run,
              unless  the  -async  flag  was  used,  in which case the command
              returns immediately with no error.  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  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.


EXAMPLE
       This asks Internet Explorer (which must already be running) to go to  a
       particularly important website:
              package require dde
              dde execute iexplore WWW_OpenURL http://www.tcl.tk/


SEE ALSO
       tk(n), winfo(n), send(n)


KEYWORDS
