dde(3tcl) | Tcl Built-In Commands | dde(3tcl) |
dde - 执行一个动态数据交换命令
package require dde 1.1
dde servername ?topic?
dde ?-async? command service topic ?data?
当运行在 Microsoft Windows 下的时候,这个命令允许一个应用来发送动态数据交换(Dynamic Data Exchange:DDE)命令。动态数据交换是一种机制,在这里应用可以交换原始数据。每个 DDE 事务都需要一个服务名(service name)和一个主题(topic)。服务名和主题均由应用来定义;Tcl 使用的服务名是 TclEval,而主题名是用dde servername 给出的解释器的名字。其他的应用有其自己的服务名和主题。例如,Microsoft Excel 的服务名是 Excel。
dde 命令的唯一的选项是:
下面的命令是完整的动态数据交换命令集的子集。
一个 Tcl 解释器总是有一个服务名 TclEval。每个不同的运行 Tcl 应用的解释器必须给予一个用 dde servername指定的唯一的名字。每个解释器只有使用 dde servername命令来设置名字,这个解释器才可作为一个 DDE 主题来获得。所以一个 dde services TclEval {} 命令将返回一个服务-主题对的列表,这里每个当前运行的解释器都将是一个主题。
当 Tcl 处理一个 dde execute 命令时,用于执行的数据作为一个脚本在 dde execute 命令的主题指明的解释器中运行。
当 Tcl 处理一个 dde request命令时,它返回在 dde 命令中给出的变量的值,变量在由 dde主题指名的解释器的上下文中的。Tcl 为内部使用而保留变量 $TCLEVAL $EXECUTE $RESULT,对这些变量的dde request 命令将返回不可预测的(unpredictable)结果。
打算运行一个Tcl 脚本的一个外部(external)应用应当使这个脚本在一个变量中存储它的结果,运行 dde execute 命令,接着运行 dde request 得到这个变量的值。
当使用 DDE 时,注意要确保使用 update或者 vwait 来刷新事件队列。在使用wish时这是缺省的,但不包括调用了一个阻塞命令的情况(例如 exec 而不填加 & 来在后台运行进程)。如果由于某种原因而导致事件队列没被刷新,DDE 命令将挂起(hang)直到事件队列被刷新。这可能产生死锁的情况。
tk(n), winfo(n), send(n)
application, dde, name, remote execution
寒蝉退士
2001/06/18
http://cmpp.linuxforum.net
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
8.1 | Tcl |