- NAME
- dde — Execute a Dynamic Data Exchange command
- SYNOPSIS
- DESCRIPTION
- DDE COMMANDS
- dde
servername ?-force? ?-handler proc?
?--? ?topic?
- dde execute
?-async? ?-binary? service topic data
- dde poke
?-binary? service topic item data
- dde request
?-binary? service topic item
- dde services
service topic
- dde eval
?-async? topic cmd ?arg arg ...?
- DDE AND
TCL
- EXAMPLE
- SEE ALSO
- KEYWORDS
dde — Execute a Dynamic Data Exchange command
package require dde 1.4
dde servername ?-force? ?-handler proc?
?--? ?topic?
dde execute ?-async? ?-binary? service
topic data
dde poke ?-binary? service topic item data
dde request ?-binary? service topic item
dde services service topic
dde eval ?-async? topic cmd ?arg arg
...?
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 following commands are a subset of the full Dynamic Data
Exchange set of commands.
- dde servername ?-force?
?-handler proc? ?--? ?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. If the given topic name is
already in use, then a suffix of the form “ #2” or “ #3” is
appended to the name to make it unique. The command's result will
be the name actually used. The -force option is used to
force registration of precisely the given topic name.
The -handler option specifies a Tcl procedure that will
be called to process calls to the dde server. If the package has
been loaded into a safe interpreter then a -handler
procedure must be defined. The procedure is called with all the
arguments provided by the remote call.
- dde execute ?-async?
?-binary? 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. Without
the -binary option all data will be sent in unicode. For dde
clients which don't implement the CF_UNICODE clipboard format, this
will automatically be translated to the system encoding. You can
use the -binary option in combination with the result of
encoding convertto to
send data in any other encoding.
- dde poke ?-binary?
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.
Without the -binary option all data will be sent in unicode.
For dde clients which don't implement the CF_UNICODE clipboard
format, this will automatically be translated to the system
encoding. You can use the -binary option in combination with
the result of encoding
convertto to send data in any other encoding.
- 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 empty strings ({}), then all service-topic pairs currently
available on the system are returned. If service is empty
and topic is not, then all services with the specified topic
are returned. If service is non-empty and topic is,
all topics for a given service are returned. If both are non-empty,
if that service-topic pair currently exists, it is returned;
otherwise, an empty string 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.
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.
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/
tk, winfo, send
application, dde, name, remote execution
Copyright © 1997 Sun Microsystems, Inc.
Copyright © 2001 ActiveState Corporation.