開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


DDE通信 編

 StyxもやっとDDE通信ができた。 これを書いている現在はまだNiftyのStyxサポートルームにはアナウンスしていない。 こちらを先に見る人もいるかもしれない。

 DDE通信とは起動しているアプリとお話する手段で、昔からある。 いまではCOMなどが主流でDDEは時代遅れかもしれない。 それをいまごろサポートできたとは、お粗末な話である。

 DDE通信は汎用技術であるが、ほとんどはファイルを開くために使われる。 たとえばワードが起動していて、ワード文書をダブルクリックすると、起動しているワードがその文書を開く。

 しかしStyxでこれをすると、新しくワードが起動され、そいつがワード文書を開く。 DDEのサポート否かでこのような差が出る。

 ちまたのランチャではDDE通信をサポートしているように見えるかもしれない。 おそらくはShellExecuteを使っていると考えられる。この関数は強力で自動的にDDE通信もやってくれる。 Styxはそもそもアプリの起動にCreateProcessを使っている。その名の通り新しくプロセスを作り出す。 ShellExecuteを使えばよかったのだが、いろいろ理由があり、イバラの道を歩むことになった。 たとえばShellExecuteはLNKファイルを起動できない。

 このたびやっとDDE通信の概要がわかりサポートとなった。 やってみるとそれほど複雑ではないが、真っ暗闇から手探りで外形をつかむのは簡単ではない。 何度もアプリとやりとりして動作するのが面白い。 アプリの開発者と私が会話しているような、極めて人間的な動作に思える。 ゴミの後始末もどちらがするかはっきりしていて気持ちよい。

 さてDDE通信をやってみて面白いことに気づいた。 パワーポイントはDDE通信しないのにDDE通信みたいな動作をする。 CreateProcessでパワーポイントを起動する。 起動の際はコマンドラインにオープンさせるファイル名を書いておく。 パワーポイントがすでに起動していると、CreateProcessを使っているのに新しいパワーポイントが起動しないで、 既存のパワーポイントがそのファイルを開く。

 DDE通信を行うアプリはレジストリにDDE通信の情報を書き込む。 ワードなどには当然ある。 パワーポイントにはDDE通信のレジストリエントリがなかった。

 ここでパワーポイントの起動時の動作を想像してみるのも面白い。 自分が起動されると二重起動をチェックするらしい。 パワーポイントは二つ起動できないようになっているらしい。 もしすでに起動されているパワーポイントがいれば、そいつにコマンドラインのファイル名を何らかの方法で渡していると考えられる。 内部の秘密DDE通信をやっているのかもしれない。そして自分はそいつに願いを託し、短い生涯を終える。

 同じメーカーの同じカテゴリの同じMDIソフトなのに、このような違いがあるのは不思議だ。 パワーポイントは複数起動されると困ることがあるのかもしれない。

1999.7.30