この記事では、DDE 拡張機能と ZOS-API の違いを説明し、DDE 拡張機能から ZOS-API への移行をスムーズにするために有用な情報を提供します
著者 Sandrine Auriol
Introduction
ZOS-API のように、DDE 拡張機能は Windows プログラムと OpticStudio の通信リンクの確立を可能とし、OpticStudio のレンズ情報を他のプログラムで取得できます。
DDE 拡張機能とは
DDE 拡張機能は OpticStudio インターフェースの プログラミング...拡張機能リスト にあります。
DDE 拡張機能は ZOS-API に置き換え変えられました。詳細については、ヘルプファイルを確認してください。プログラミング タブ > 拡張機能について > はじめに (拡張機能について)
DDE 拡張機能と ZOS-API で用いられる通信プロトコルとは
DDE 拡張機能を用いるとき、アプリケーションと OpticStudio の通信は動的データ交換 (Dynamic Data Exchange: DDE) で実現します。DDE は、プログラム間でデータを共有するための Windows OS 内で定義されたプロトコルです。Microsoft 社はより新しいオブジェクトのリンクと埋め込み (Object Linking and Embedding: OLE) ツールキットでDDE を置き換えましたが、DDE は今でも Office アプリケーションでサポートされています。詳細については、こちらのリンクを確認してください。https://docs.microsoft.com/en-us/windows/desktop/dataxchg/about-dynamic-data-exchange
ZOS-API はコンポーネント オブジェクト モデル (Component Object Model: CPM) インターフェースに基づいています。詳細は、こちらのリンクから引用します。https://docs.microsoft.com/en-us/windows/desktop/com/component-object-model--com--portal: "COM は、相互に作用するバイナリ ソフトウェア コンポーネントを作成するための、プラットフォームに依存しない、分散型のオブジェクト指向システムです。COM は Microsoft OLE (複合ドキュメント) と ActiveX (インターネット対応コンポーネント) 技術のための基盤技術です。"
ZOS-API は .NET ライブラリを起源に持ちます。API を用いたプログラミングにおいては、COM もしくは .NET 言語を使用でき、ユーザの慣れている言語を選択できます。https://docs.microsoft.com/en-us/windows/desktop/learnwin32/what-is-a-com-interface-
DDE 拡張機能を ZOS-API で置き換える理由
DDE は非常に古い技術で、Microsoft は推奨していません。単一のアプリケーションが他のすべてのアプリケーションに干渉できることは、Microsoft 自身のアプリケーションであっても不安定で脆弱です。一般的に、これを回避する方法は問題となるアプリケーションを閉じる以外にはありません。DDE を通じてさらに複雑な通信を行うのは実装が困難で、しばしば多大なメンテナンスが必要となります。
.NET はアプリケーション間での任意のデータ通信を比較的容易にする最新の言語であり、オブジェクト指向環境で使用するために設計されています。つまり、クラス / プロパティ / メソッドにカプセル化し、API をヒエラルキーで (階層的に) 管理できます。これらはいずれも DDE では困難か不可能でした。また、プログラムがより簡単で効率的になるため、ZOS-API を通じて OpticStudio のすべての機能の開示が可能となります。
移行について
OpticStudio 15 から、DDE 拡張機能は非推奨になりました。このリリース以降、新しい機能やバグ修正は提供さていません。OpticStudio で動作する独自のアプリケーションを作成するユーザは、ZOS-API を使用することが強く推奨されています。ZOS-API は、使用可能な最新のプログラミング技術に基づいたはるかに強力なツールです。DDE から ZOS-API への移行をサポートするために、以下のリンクには古い DDE データ項目を新しい ZOS-API メソッドにする表を示します。Mapping DDE data items to ZOS-API methods(英語版のみ)
よくある質問
“PushLens” を ZOS-API で置き換える方法
DDE 拡張機能では、”PushLens” はサーバのメモリに現在読み込まれているレンズを取得し、レンズデータ エディタに入力します。
これを ZOS-API で行う場合は、以下のようになります。
- インタラクティブ拡張機能モード。LDE は自動的に更新されます。
- 実行ファイルとしてコンパイルされた ZOS-API 拡張機能。
ユーザは、変更があった場合に OpticStudio の UI を自動的に更新するか更新を抑制するか選択できます。この設定は、拡張機能の中で任意のタイミングで変更できます。デフォルトでは、ZOS-API 拡張機能は現在開いているレンズファイル上で実行されますが、代わりに一時システムで実行するように選択できます。これによって、メインの光学系に影響を及ぼしません。
詳細は、ヘルプファイルの “プラグイン / エクステンション” を参照してください。(プログラミング タブ > ZOS-API について > プラグイン / 拡張機能)
“GetRefresh” を ZOS-API で置き換える方法
DDE 拡張機能では、”GetRefresh” は OpticStudio のすべてのレンズデータ (波長、視野、エディタなど) を、サーバに保存されたコピーにコピーします。次に、レンズが更新されます。これによって、OpticStudio は瞳の位置、ソルブ、屈折率データを再計算します。
ZOS-API では、ZOS からアプリケーションへのレンズデータの取得は、クラス プロパティ (例えば、ILDERow クラス) にアクセスしてレンズデータを取得することで、マニュアルで実行されます。
KA-01816
コメント
記事コメントは受け付けていません。