dde -動的データ交換(DDE)コマンドを実行します。
- package require dde 1.2
- dde servername ?topic?
- dde execute ?-async? service topic ?data?
- dde poke service topic item data
- dde request ?-binary? service topic ?item?
- dde services service topic ?data?
- dde eval ?-async? service topic ?data?
本コマンドは、アプリケーションがMicrosoft Windowsで実行している場合のDynamic
Data Exchange ( DDE ) コマンドを送ることを可能にします。Dynamic Data
Exchange ( DDE )はアプリケーション同士が直接、データを交換するメカニズムの1つです。
DDEトランザクションにはserver name とtopicが必要です。server
name とtopicの両方はアプリケーションで定義されます。TclはTclEvalをサーバー名として使います。topic
名はdde servernameによって与えられたインタープリタ名です。他のアプリケーションは各々独自のserver
name 及びtopicを定義します。例えば、Microsoft ExcelはExcelをサーバー名として使います。
eval とexecute コマンドでは-asyncオプションを使うことが出来ます。
次のコマンドはDynamic Data Exchangeコマンドの全セットのサブセットです。
- dde servername ?topic?
- dde execute ?-async? service topic data
- dde poke service topic item data
- dde request ?-binary? service topic item
- dde services service topic
- dde eval ?-async? topic cmd ?arg arg
...?
- dde servername?topic?
- dde servernameはインタープリタをDDEサーバとして登録します。TclEvalをサーバー名とし、topic引数で指定されたtopic名とします。topicが指定されない場合、dde
servernameはカレントのtopicを返します。servernameはサービスとして登録されていない場合は空の文字列を返します。
- dde execute ?-async? service topic ?data?
- dde executeはdataをtopicで指定されたtopicと合わせて、serviceにで指定されたサーバに送ります。通
常serviceはアプリケーション名であり、topicは使用されているファイルです。dataフィールドはリモートのアプリケーションに転送されます。受け取りアプリケーションはdataフィールドをスクリプトとして処理します。スクリプトは受け取りアプリケーションにおいて実行されます。-asyncオプションは非同期呼び出しを要求します。-asyncを使わない場合、スクリプトが実行されなければ、このコマンドはエラーメッセージを返します。-asyncを使った場合はエラーを返さずに終わります。
- dde poke service topic item data
- dde poke は指定されたtopicとitemを使って、serviceによって示されたサーバにdataを転送します。
通常serviceはアプリケーション名です。 topicはアプリケーション依存ですが、通常はサーバのコマンドまたは転送されるファイル名です。itemもアプリケーション依存で、あまり使われませんが、常に非ヌル値でなければなりません。dataフィールドはリモートアプリケーションに転送されます。
- dde request ?-binary? service topic ?item?
- 一般的にdde requestは値を取得するためのコマンドです。例えば、Microsoft
Excelにおけるセル(cell)の値、またはMicrosoft Wordにおける選択注テキスト等を取得します。通常serviceはアプリケーション名、topicはファイル名であり、itemはアプリケーション依存です。このコマンドはアプリケーションで定義されたitemの値を返します。通常はこの値がヌルを末尾とする文字列と解釈されます。-binaryが指定された場合、結果は1つのバイト配列として返されます。
- dde services service topic
- dde servicesは現在コンピュータに存在するservice-topicペアのリストを返します。serviceとtopic両方が空文字列
( {} ) なら、システム上現在全ての利用可能なservice-topicのペアを返します。serviceが空であり、topicが空でない場合、指定されたtopicを持つ全てのサービスは返されます。serviceが空でないが、topicが空である場合、指定されたサービスに関する全てのtopicが返されます。両方が空でないservice-topicペアが存在する場合は、そのペアを返します。そうでない場合は、ヌルを返します。
- dde eval ?-async? service topic ?data?
- dde evalはtopic
によって指定されたインタープリタを使って指定コマンドをその引数で実行します。DDEサービスはTclEvalサービスでなければなりません。-asyncオプションは非同期呼び出しを要求します。-asyncを指定しない場合、スクリプトが実行されなければ、このコマンドはエラーメッセージを返します。そうでない場合は、このコマンドはエラーを返さないで終わります。このコマンドはWindowsへの復帰要求送信のためにつかわれます。
Tclインタープリタは常にTclEval型のサービス名を持っています。
実行されている全Tclアプリケーションの個々の異なるインタープリタはdde
servernameによって指定されたユニークな名前をもたなければなりません。各interpはDDEのtopicとして利用可能にするには、dde
servernameコマンドが各interpのためにtopic名を設定しなければなりません。従って、dde
service Tcl {}コマンドは、service-topicペアのリストを返し、そのtopicの内容は現在実行されている各々のinterpです。
Tclがdde executeコマンドを処理するとき、dde executeコマンドのtopic引数で示すinterpは、引数として与えられたデータをスクリプトとして実行します。
Tclがdde requestコマンドを処理するとき、ddeコマンドの引数で示された変数の、ddeのtopicによって示されたinterpの文脈における値を返します。Tclは内部使用のために変数$TCLEVAL$EXECUTE$RESULTを保存します。この変数に対してdde
requestコマンドを実行しても、不特定な結果しか得られません。
Tclでスクリプトを実行したい外部のアプリケーションは、スクリプトの実行結果を1つの変数に格納しておき、dde
executeコマンドを実行させます。dde requestを実行することでその変数の値を取得できます。
DDEを使うとき、イベントの列を updateか
vwaitのいずれかを使ってフラッシュして置かなければなりません。wishを使うとき、blocking
コマンド (たとえば、プロセスをバックグラウンドに置くための「&」が付いていないexec の場合 )
を呼びださない限り、このフラッシュ動作はデフォルトとして実行されます。なにかの理由でイベント列がフラッシュされていない場合、イベント列はフラッシュされるまではDDEコマンドは待ち状態になります。システムはデッドロック状況になってしまいます。
tk, winfo, send
application,dde,
name, remote
execution
Copyright © 1997 Sun Microsystems, Inc.
Copyright © 2001 ActiveState Corporation.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|