1 | '\" |
---|
2 | '\" Copyright (c) 1997 Sun Microsystems, Inc. |
---|
3 | '\" Copyright (c) 2001 ActiveState Corporation. |
---|
4 | '\" |
---|
5 | '\" See the file "license.terms" for information on usage and redistribution |
---|
6 | '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
---|
7 | '\" |
---|
8 | '\" RCS: @(#) $Id: dde.n,v 1.24 2008/01/18 15:59:22 dkf Exp $ |
---|
9 | '\" |
---|
10 | .so man.macros |
---|
11 | .TH dde n 1.3 dde "Tcl Bundled Packages" |
---|
12 | .BS |
---|
13 | '\" Note: do not modify the .SH NAME line immediately below! |
---|
14 | .SH NAME |
---|
15 | dde \- Execute a Dynamic Data Exchange command |
---|
16 | .SH SYNOPSIS |
---|
17 | .sp |
---|
18 | \fBpackage require dde 1.3\fR |
---|
19 | .sp |
---|
20 | \fBdde servername\fR ?\fB\-force\fR? ?\fB\-handler \fIproc\fR? ?\fB\-\|\-\fR? ?\fItopic\fR? |
---|
21 | .sp |
---|
22 | \fBdde execute\fR ?\fB\-async\fR? \fIservice topic data\fR |
---|
23 | .sp |
---|
24 | \fBdde poke\fR \fIservice topic item data\fR |
---|
25 | .sp |
---|
26 | \fBdde request\fR ?\fB\-binary\fR? \fIservice topic item\fR |
---|
27 | .sp |
---|
28 | \fBdde services \fIservice topic\fR |
---|
29 | .sp |
---|
30 | \fBdde eval\fR ?\fB\-async\fR? \fItopic cmd \fR?\fIarg arg ...\fR? |
---|
31 | .BE |
---|
32 | |
---|
33 | .SH DESCRIPTION |
---|
34 | .PP |
---|
35 | This command allows an application to send Dynamic Data Exchange (DDE) |
---|
36 | command when running under Microsoft Windows. Dynamic Data Exchange is |
---|
37 | a mechanism where applications can exchange raw data. Each DDE |
---|
38 | transaction needs a \fIservice name\fR and a \fItopic\fR. Both the |
---|
39 | \fIservice name\fR and \fItopic\fR are application defined; Tcl uses |
---|
40 | the service name \fBTclEval\fR, while the topic name is the name of the |
---|
41 | interpreter given by \fBdde servername\fR. Other applications have their |
---|
42 | own \fIservice names\fR and \fItopics\fR. For instance, Microsoft Excel |
---|
43 | has the service name \fBExcel\fR. |
---|
44 | .PP |
---|
45 | .SH "DDE COMMANDS" |
---|
46 | .PP |
---|
47 | The following commands are a subset of the full Dynamic Data Exchange |
---|
48 | set of commands. |
---|
49 | .TP |
---|
50 | \fBdde servername \fR?\fB\-force\fR? ?\fB\-handler \fIproc\fR? ?\fB\-\|\-\fR? ?\fItopic\fR? |
---|
51 | . |
---|
52 | \fBdde servername\fR registers the interpreter as a DDE server with |
---|
53 | the service name \fBTclEval\fR and the topic name specified by \fItopic\fR. |
---|
54 | If no \fItopic\fR is given, \fBdde servername\fR returns the name |
---|
55 | of the current topic or the empty string if it is not registered as a |
---|
56 | service. If the given \fItopic\fR name is already in use, then a |
---|
57 | suffix of the form |
---|
58 | .QW " #2" |
---|
59 | or |
---|
60 | .QW " #3" |
---|
61 | is appended to the name to make it |
---|
62 | unique. The command's result will be the name actually used. The |
---|
63 | \fB\-force\fR option is used to force registration of precisely the |
---|
64 | given \fItopic\fR name. |
---|
65 | .RS |
---|
66 | .PP |
---|
67 | The \fB\-handler\fR option specifies a Tcl procedure that will be called to |
---|
68 | process calls to the dde server. If the package has been loaded into a |
---|
69 | safe interpreter then a \fB\-handler\fR procedure must be defined. The |
---|
70 | procedure is called with all the arguments provided by the remote |
---|
71 | call. |
---|
72 | .RE |
---|
73 | .TP |
---|
74 | \fBdde execute\fR ?\fB\-async\fR? \fIservice topic data\fR |
---|
75 | . |
---|
76 | \fBdde execute\fR takes the \fIdata\fR and sends it to the server indicated |
---|
77 | by \fIservice\fR with the topic indicated by \fItopic\fR. Typically, |
---|
78 | \fIservice\fR is the name of an application, and \fItopic\fR is a file to |
---|
79 | work on. The \fIdata\fR field is given to the remote application. |
---|
80 | Typically, the application treats the \fIdata\fR field as a script, and the |
---|
81 | script is run in the application. The \fB\-async\fR option requests |
---|
82 | asynchronous invocation. The command returns an error message if the |
---|
83 | script did not run, unless the \fB\-async\fR flag was used, in which case |
---|
84 | the command returns immediately with no error. |
---|
85 | .TP |
---|
86 | \fBdde poke \fIservice topic item data\fR |
---|
87 | . |
---|
88 | \fBdde poke\fR passes the \fIdata\fR to the server indicated by |
---|
89 | \fIservice\fR using the \fItopic\fR and \fIitem\fR specified. Typically, |
---|
90 | \fIservice\fR is the name of an application. \fItopic\fR is application |
---|
91 | specific but can be a command to the server or the name of a file to work |
---|
92 | on. The \fIitem\fR is also application specific and is often not used, but |
---|
93 | it must always be non-null. The \fIdata\fR field is given to the remote |
---|
94 | application. |
---|
95 | .TP |
---|
96 | \fBdde request\fR ?\fB\-binary\fR? \fIservice topic item\fR |
---|
97 | . |
---|
98 | \fBdde request\fR is typically used to get the value of something; the |
---|
99 | value of a cell in Microsoft Excel or the text of a selection in |
---|
100 | Microsoft Word. \fIservice\fR is typically the name of an application, |
---|
101 | \fItopic\fR is typically the name of the file, and \fIitem\fR is |
---|
102 | application-specific. The command returns the value of \fIitem\fR as |
---|
103 | defined in the application. Normally this is interpreted to be a |
---|
104 | string with terminating null. If \fB\-binary\fR is specified, the |
---|
105 | result is returned as a byte array. |
---|
106 | .TP |
---|
107 | \fBdde services \fIservice topic\fR |
---|
108 | . |
---|
109 | \fBdde services\fR returns a list of service-topic pairs that |
---|
110 | currently exist on the machine. If \fIservice\fR and \fItopic\fR are |
---|
111 | both empty strings ({}), then all service-topic pairs currently |
---|
112 | available on the system are returned. If \fIservice\fR is empty and |
---|
113 | \fItopic\fR is not, then all services with the specified topic are |
---|
114 | returned. If \fIservice\fR is non-empty and \fItopic\fR is, all topics |
---|
115 | for a given service are returned. If both are non-empty, if that |
---|
116 | service-topic pair currently exists, it is returned; otherwise, an |
---|
117 | empty string is returned. |
---|
118 | .TP |
---|
119 | \fBdde eval\fR ?\fB\-async\fR? \fItopic cmd \fR?\fIarg arg ...\fR? |
---|
120 | . |
---|
121 | \fBdde eval\fR evaluates a command and its arguments using the interpreter |
---|
122 | specified by \fItopic\fR. The DDE service must be the \fBTclEval\fR |
---|
123 | service. The \fB\-async\fR option requests asynchronous invocation. The |
---|
124 | command returns an error message if the script did not run, unless the |
---|
125 | \fB\-async\fR flag was used, in which case the command returns immediately |
---|
126 | with no error. This command can be used to replace send on Windows. |
---|
127 | .SH "DDE AND TCL" |
---|
128 | A Tcl interpreter always has a service name of \fBTclEval\fR. Each |
---|
129 | different interpreter of all running Tcl applications must be |
---|
130 | given a unique |
---|
131 | name specified by \fBdde servername\fR. Each interp is available as a |
---|
132 | DDE topic only if the \fBdde servername\fR command was used to set the |
---|
133 | name of the topic for each interp. So a \fBdde services TclEval {}\fR |
---|
134 | command will return a list of service-topic pairs, where each of the |
---|
135 | currently running interps will be a topic. |
---|
136 | .PP |
---|
137 | When Tcl processes a \fBdde execute\fR command, the data for the |
---|
138 | execute is run as a script in the interp named by the topic of the |
---|
139 | \fBdde execute\fR command. |
---|
140 | .PP |
---|
141 | When Tcl processes a \fBdde request\fR command, it returns the value of the |
---|
142 | variable given in the dde command in the context of the interp named by the |
---|
143 | dde topic. Tcl reserves the variable \fB$TCLEVAL$EXECUTE$RESULT\fR for |
---|
144 | internal use, and \fBdde request\fR commands for that variable will give |
---|
145 | unpredictable results. |
---|
146 | .PP |
---|
147 | An external application which wishes to run a script in Tcl should have |
---|
148 | that script store its result in a variable, run the \fBdde execute\fR |
---|
149 | command, and the run \fBdde request\fR to get the value of the |
---|
150 | variable. |
---|
151 | .PP |
---|
152 | When using DDE, be careful to ensure that the event queue is flushed |
---|
153 | using either \fBupdate\fR or \fBvwait\fR. This happens by default |
---|
154 | when using \fBwish\fR unless a blocking command is called (such as \fBexec\fR |
---|
155 | without adding the \fB&\fR to place the process in the background). |
---|
156 | If for any reason the event queue is not flushed, DDE commands may |
---|
157 | hang until the event queue is flushed. This can create a deadlock |
---|
158 | situation. |
---|
159 | .SH EXAMPLE |
---|
160 | This asks Internet Explorer (which must already be running) to go to a |
---|
161 | particularly important website: |
---|
162 | .CS |
---|
163 | package require dde |
---|
164 | \fBdde execute\fR iexplore WWW_OpenURL http://www.tcl.tk/ |
---|
165 | .CE |
---|
166 | .SH "SEE ALSO" |
---|
167 | tk(n), winfo(n), send(n) |
---|
168 | .SH KEYWORDS |
---|
169 | application, dde, name, remote execution |
---|