Provided by: tcl8.4-doc_8.4.20-8_all bug

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 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 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
              application-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 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 ?-async? 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.   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 command, and then 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 -async iexplore WWW_OpenURL http://www.tcl.tk/

SEE ALSO

       tk(3tk), winfo(3tk), send(3tk)

KEYWORDS

       application, dde, name, remote execution