- English tcl9.0-doc
- English tcl8.6-doc
- 中文 (zh-CN)
- 繁體中文 (zh-TW)
dde(3tcl) | Tcl Built-In Commands | dde(3tcl) |
NAME¶
dde - 執行一個動態資料交換命令
總覽 SYNOPSIS¶
package require dde 1.1
dde servername ?topic?
dde ?-async? command service topic ?data?
描述 DESCRIPTION¶
當執行在 Microsoft Windows 下的時候,這個命令允許一個應用來發送動態資料交換(Dynamic Data Exchange:DDE)命令。動態資料交換是一種機制,在這裡應用可以交換原始資料。每個 DDE 事務都需要一個服務名(service name)和一個主題(topic)。服務名和主題均由應用來定義;Tcl 使用的服務名是 TclEval,而主題名是用dde servername 給出的直譯器的名字。其他的應用有其自己的服務名和主題。例如,Microsoft Excel 的服務名是 Excel。
dde 命令的唯一的選項是:
- -async
- 要求非同步激發(invocation)。這隻對execute 子命令有效。正常的,dde execute 子命令等待直到命令完成,返回適當的出錯資訊。當使用了 -async 選項,命令立刻返回,不能獲得出錯資訊。
DDE 命令 COMMANDS¶
下面的命令是完整的動態資料交換命令集的子集。
- dde servername ?topic?
- dde servername 用服務名 TclEval 和由 topic 指定的主題名來把直譯器註冊為一個 DDE 伺服器。如果沒有給出 topic,dde servername返回當前的主題的名字,如果未被註冊為一個服務則返回空串。
- dde execute service topic data
- dde execute 接受 data 並把它傳送到由 service 指示出的伺服器並由 topic 指示出主題。典型的,service 是一個應用的名字,而 topic 是要在其上工作的一個檔案。給予遠端應用的是 data 域(field)。典型的,應用把 data 域作為指令碼對待,接著在應用中執行指令碼。如果指令碼沒有執行,命令返回一個錯誤。如果使用了 -async標誌,命令立即返回而沒有錯誤。
- dde poke service topic item data
- dde poke 傳遞 data 到由 service指示的伺服器並用 topic 和 item 加以指定。典型的, service 是一個應用的名字。topic 由應用指定,可以是給伺服器的一個命令或一個要在其上工作的一個檔案的名字。item 也由應用指定,不常用,但必須總是非空。給予遠端應用的是 data 域( field)。
- dde request service topic item
- dde request 典型的用於得到某種東西的值;如 Microsoft Excel 中的一個單元格(cell)的值或在 Microsoft Word 中一個選擇的文字。 service 典型的是一個應用的名字。 topic典型的是檔案的名字,item由使用者來指定。命令返回在應用中定義的 item的值。
- dde services service topic
- dde services 返回當前在機器上存在的服務-主題對的一個列表。如果 service 和 topic 都是空串({}), 則返回在系統上當前可獲得的所有的服務-主題對。如果 service 是空而 topic 不是,則返回指定主題的所有服務。如果 service 不空而 topic 空,則返回指定服務的所有主題。如果均不空,若當前存在這個服務-主題對則返回它,否則返回空。
- dde eval topic cmd ?arg arg ...?
- dde eval 求值一個命令和它的引數,直譯器用 topic 指定。DDE 服務必須是TclEval 服務。這個命令可以用於在 Windows 上替換 send。
DDE 和 TCL¶
一個 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)直到事件佇列被重新整理。這可能產生死鎖的情況。
參見 SEE ALSO¶
tk(n), winfo(n), send(n)
關鍵字 KEYWORDS¶
application, dde, name, remote execution
[中文版維護人]¶
寒蟬退士
[中文版最新更新]¶
2001/06/18
《中國 Linux 論壇 man 手冊頁翻譯計劃》:¶
跋¶
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
8.1 | Tcl |