## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > dde

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  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 ...?
  動的データ交換とTcl 　 DDE AND TCL
  用例 EXAMPLE
  SEE ALSO
  KEYWORDS

### NAME

dde — 動的データ交換命令を実行する Execute a Dynamic Data Exchange command

### 構文 SYNOPSIS

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 ...?

### 説明 DESCRIPTION

この命令は､マイクロソフト社 Windows の元で実行されている時､応用譜に動的データ交換(DDE)命令を送ることを許容する｡動的データ交換は､そこで応用譜が生のデータを交換できる仕組みである｡それぞれの DDE 一括処理手続は service name (役務名) と topic (表題)を必要とする｡ service name と topic は両方とも応用譜が定義する; Tcl は役務名 TclEval を使用し､他方､その表題の名前は dde servername によって与えられた解釈実行機能の名前である｡他の応用譜はそれ自身のservice name (役務名) と topic (表題)を有している｡譬えば､マイクロソフト社のエクセルは役務名 Excel を有す｡ 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.

### 動的データ交換命令 DDE COMMANDS

次の諸命令は､全ての動的データ交換命令の部分集合である｡ 　　　 The following commands are a subset of the full Dynamic Data Exchange set of commands.

dde servername ?-force? ?-handler proc? ?--? ?topic?
  dde servername は､役務名 TclEval と､ topic によって指定された表題名とを持つDDE 中央集中処理装置として､解釈実行機能を登録する｡topic が与えられないと､dde servername は現在の表題名か､もし､役務として登録されていないと空文字列を返す｡もし与えられた topic 名が既に使用されていると接尾辞 “ #2” や “ #3” が添付され､重複を避けさせる｡命令の結果は実際に使用される名前になる｡ -force 指示項目は与えられた 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.

  -handler 指示項目は､ dde 中央集中処理装置を呼出し処理の為に呼出されるTcl 手続函数を指定する｡もし､既に梱包が安全な解釈実行機能の中に組込まれていると､ -handler 手続函数が定義されねばならない｡その手続函数は遠隔呼び出しにより提供された全ての引数と共に呼出される｡ 　　　 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 は､data を採り､それを service によって指定された表題と共に､service によって指定された中央集中処理装置に送る｡典型的には､service は応用譜の名前であり､ topic は処理するファイルである｡data 欄は隔たれた応用譜に与えられる｡典型的には､応用譜は data 欄を応用譜として扱い､そして､記述譜は応用譜の中で実行される｡ -async 指示項目は非同期の起動を要求する｡この命令はもし記述譜が実行されないと､ -async 旗標が使われていない限り､不都合伝言文を返すが､使われている場合は不都合なしに直ちに戻る｡ 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.

  -binary 指示項目なしの場合は全てのデータはユニコードで送られる｡ CF_UNICODE 臨時板書式を実装してない dde 依頼側にとってこれは自動的に系の符号系に翻訳される｡他のどの様な符号系にもデータを送る為の encoding convertto の結果と組合せて -binary 指示項目を使うことができる｡ 　　　 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 は､ data を､指定された topic と item を使い､ service によって指定された中央集中処理装置に送る｡典型的には､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.

  -binary 指示項目なしの場合は全てのデータはユニコードで送られる｡ CF_UNICODE 臨時板書式を実装してない dde 依頼側にとってこれは自動的に系の符号系に翻訳される｡他のどの様な符号系にもデータを送る為の encoding convertto の結果と組合せて -binary 指示項目を使うことができる｡ 　　　 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 は､典型的には何かの値を得るのに使われる; マイクロソフト社エクセルの枠内の値や､マイクロソフト社ワードの選択した文章とか｡ service は典型的には応用譜の名前であり､ topic は典型的にはファイルの名前であり､ item は応用譜が定める｡この命令は､応用譜の中で定義された item の値を返す｡通常､それは､ヌル終端の文字列であるとして解釈される｡もし､ -binary が指定されていると結果はバイト配列として返される｡ 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 は､機械装置上に現在実在する役務-表題対のリストを返す｡もし､ service と topic の両方が空文字列 ({})であると､系上の利用し得る全ての役務-表題対が返る｡もし､ service が空文字列で､topic がそうでないと､指定された表題の全ての役務が返る｡もし､ 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 は topic に指定された解釈実行機能を使って､命令と引数を評価する｡ DDE 役務は TclEval 役務でなければならない｡ -async 指示項目は非同期の起動を要求する｡ この命令は記述譜が走らない場合､ -async 旗標が使われていない限り､不都合伝言文を返すが､使われているときは不都合なしに直に帰る｡この命令は､Windows上で send の置き換えに利用できる｡ 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.

### 動的データ交換とTcl 　 DDE AND TCL

Tcl 解釈実行機能は常に TclEval の役務名を有している｡全ての実行中のTcl 応用譜のそれぞれ異なった解釈実行機能は dde servername に指定された他と重複しない名前を与えられる｡それぞれの解釈実行機能は､DDE 表題として dde servername 命令がそれぞれの解釈実行機能の表題の名前を設定して使った場合にのみ利用できる｡そこで､ dde services TclEval {} 命令は役務-表題対のリストを返す､そこでは､現在実行されているそれぞれの解釈実行機能が表題になっている｡ 　　 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.

Tcl が dde execute 命令を処理している時に､実行の為のデータは､ dde execute 命令の表題によって名前付けされた解釈実行機能中の記述譜として実行される｡ 　　　 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.

Tcl が dde request 命令を処理している時に､ dde 表題により名前を付けられた解釈実行機能の文脈中の dde 命令の中で与えられた変数の値を返す｡Tcl は変数 $TCLEVAL$EXECUTE$RESULT を内部で使用するため予約しており､ その値のに対する dde request 命令は予想できない結果を与えることになる｡ 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.

Tcl 中で記述譜を走らせたい外部応用譜は､その記述譜に､その結果を変数内に保存させ(る様に記述しておき)､次いで dde execute 命令を実行させ､更に､変数の値を得る為に dde request を実行させるべきである｡ 　　 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.

DDE を使う時､ update か vwait の何れかを使って行事待ち行列が消去されることを注意深く確認されたい｡これは､ (処理課程を背景処理に置く為に & を追加することなく exec を行う様に)抑制命令が呼出されない限り､ wish を省略時設定で使うことで生じる｡もし､何かの理由で行事待ち行列が消去されないと､ DDE 命令は行事待ち行列の内容が消去される迄留保されるかもしれない｡これは､永続的膠着状態を発生する可能性がある｡　　　　 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.

### 用例 EXAMPLE

これは､インターネット・エクスプローラー(それは既に稼動中でなければならない)に特定の重要な電網場所に行く様依頼する: 　　　 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-lang.org/

### SEE ALSO

tk, winfo, send

### KEYWORDS

application, dde, name, remote execution
Copyright © 1997 Sun Microsystems, Inc.
Copyright © 2001 ActiveState Corporation.