オートメーション クライアント
オートメーションを使うと、アプリケーションから、他のアプリケーションに実装されているオブジェクトを操作したり、他のアプリケーションから操作できるように自分のオブジェクトを公開したりできます。 オートメーション クライアントは、別のアプリケーションに属している公開オブジェクトを操作することのできるアプリケーションです。 オブジェクトを公開するアプリケーションは、オートメーション サーバーと呼ばれます。 クライアントは、サーバー アプリケーションのオブジェクトのプロパティや関数にアクセスすることで、それらのオブジェクトを操作します。
オートメーション クライアントの種類
オートメーション クライアントには、次の 2 種類があります。
サーバーのプロパティと操作に関する情報を (実行時に) 動的に取得するクライアント。
サーバーのプロパティと操作を指定する静的な (コンパイル時に提供される) 情報を有するクライアント。
最初の種類のクライアントは、サーバーのメソッドとプロパティに関する情報を OLE システムの IDispatch
メカニズムに照会することで取得します。 IDispatch
は、動的クライアントに使用するうえでは問題ありませんが、静的クライアントに使用するのは困難です。静的クライアントでは、駆動されるオブジェクトがコンパイル時にわかっている必要があります。 Microsoft Foundation Class には、静的にバインドされたクライアントのための COleDispatchDriver クラスが用意されています。
静的にバインドされたクライアントは、そのクライアント アプリケーションに静的にリンクされたプロキシ クラスを使用します。 このクラスは、C++ のタイプ セーフな方法で、サーバー アプリケーションのプロパティと操作をカプセル化する役割を担います。
COleDispatchDriver
クラスは主に、オートメーションのクライアント側に対するサポートを提供します。 COleDispatchDriver
から派生したクラスは、[新しい項目の追加] ダイアログ ボックスを使用して作成します。
次に、サーバー アプリケーションのオブジェクトのプロパティと関数を表すタイプライブラリ ファイルを指定します。 このファイルが [項目の追加] ダイアログ ボックスによって読み取られ、COleDispatchDriver
の派生クラスが、メンバー関数と共に作成されます。アプリケーションからこのメンバー関数を呼び出すことで、C++ のサーバー アプリケーションのオブジェクトにタイプ セーフな方法でアクセスできます。 その他、COleDispatchDriver
から継承された機能によって、適切なオートメーション サーバーを呼び出すプロセスが単純化されています。
オートメーション クライアントにおけるイベントの処理
オートメーション クライアントでイベントを処理したい場合は、シンク インターフェイスを追加する必要があります。 MFC には、ActiveX コントロール用のシンク インターフェイスの追加を支援するウィザードがありますが、他の COM サーバーには対応していません。