Share via


オートメーション

更新 : 2007 年 11 月

オートメーション (旧 "OLE オートメーション") 機能を使うと、1 つのアプリケーションからほかのアプリケーションに実装されているオブジェクトを操作したり、ほかのアプリケーションから操作できるように自分のオブジェクトを公開したりできます。

オートメーション サーバーは、COM インターフェイスを通してほかのアプリケーション (オートメーション クライアント) に機能を公開するアプリケーション (一種の COM サーバー) です。オートメーション クライアントは、この公開を通してオブジェクトに直接アクセスし、オブジェクトが提供するサービスを使用することで、特定の機能を自動化できます。

オートメーション サーバーとオートメーション クライアントは、COM インターフェイスを使用します。COM インターフェイスは、常に IDispatch から派生し、オートメーション型と呼ばれる一連のデータ型を受け取ったり返したりします。ほかのアプリケーションからアクセス可能なメソッドやプロパティを提供し、オートメーション インターフェイスを公開するオブジェクトはすべて自動化できます。OLE オブジェクトと COM オブジェクトは、どちらもオートメーションを利用できます。オブジェクトの自動化は、ローカルでもリモートでも可能です。リモートとは、ネットワークでアクセス可能な別のコンピュータにあるという意味です。つまり、オートメーションには次の 2 つのカテゴリがあります。

  • オートメーション (ローカル)。

  • リモート オートメーション。分散 COM (DCOM: Distributed COM) を使ってネットワーク経由で行われるオートメーションです。

アプリケーションがほかのアプリケーションでも役に立つ機能を備えている場合は、オブジェクトを公開することは有益です。たとえば、ActiveX コントロールは一種のオートメーション サーバーです。ActiveX コントロールをホストするアプリケーションは、ActiveX コントロールのオートメーション クライアントです。

ワード プロセッサからほかのプログラムに公開されているスペル チェック機能も、オブジェクト公開の例です。オブジェクトを公開すると、ほかのアプリケーションの既製の機能を利用できるようになるので、そのアプリケーションの機能が向上します。このように、オートメーションは、再利用性やカプセル化などのオブジェクト指向プログラミングの原理をアプリケーション自体のレベルで利用しています。

さらに重要なことは、オートメーションがユーザーやソリューション プロバイダに提供するサポートです。標準的な仕様のインターフェイスを介してアプリケーションの機能を公開すると、多数あるアプリケーション固有のマクロ言語ではなく、Microsoft Visual Basic などの単一の汎用言語で広範なソリューションを構築できるようになります。

Microsoft Excel や Microsoft Visual C++ など、多くの商用アプリケーションでは、その機能の大部分を自動化できます。たとえば Visual C++ の場合、VBScript のマクロを記述することで、ビルド、コード編集、デバッグ作業などを自動化できます。

オートメーションにおけるパラメータの受け渡し

オートメーション メソッドの作成で問題になるのは、オートメーション サーバーとオートメーション クライアント間でデータを "安全" に受け渡すための統一した機構を提供することです。オートメーションは、VARIANT 型を使ってデータを渡します。VARIANT 型はタグ付きの共用体であり、値を示すデータ メンバ (C++ の無名共用体) と、この共用体に格納されている情報の型を示すデータ メンバを持ちます。VARIANT 型でサポートされる標準のデータ型は、2 バイトおよび 4 バイトの整数、4 バイトおよび 8 バイトの浮動小数点数、文字列、そしてブール値です。HRESULT (OLE エラー コード)、CURRENCY (固定小数点数値型)、DATE (絶対日付と時刻) の各型もサポートされます。さらに、IUnknown インターフェイスと IDispatch インターフェイスへのポインタもサポートされます。

VARIANT 型は、COleVariant クラスにカプセル化されています。サポートされている CURRENCY クラスと DATE クラスは、COleCurrency クラスと COleDateTime クラスにカプセル化されています。

オートメーションのサンプル

  • AUTOCLIK   オートメーションの手法とリモート オートメーションの基礎を学習します。

  • ACDUAL   オートメーション サーバー アプリケーションに、デュアル インターフェイスを追加します。

  • CALCDRIV   MFCCALC を起動するオートメーション クライアント アプリケーションです。

  • INPROC   インプロセス オートメーション サーバー アプリケーションについて説明します。

  • IPDRIVE   INPROC を起動するオートメーション クライアント アプリケーションです。

  • MFCCALC   オートメーション クライアント アプリケーションについて説明します。

さらに詳しくは次のトピックをクリックしてください。

目的に合ったトピックをクリックしてください

参照

概念

MFC COM