オートメーション サーバー

オートメーション機能を使うと、ほかのアプリケーションで実装されているオブジェクトを操作することも、逆に自分のオブジェクトを公開してほかのアプリケーションでそれを操作できるようにすることも可能です。 オートメーション サーバーとは、プログラミング可能なオブジェクト (オートメーション オブジェクト) をほかのアプリケーション (オートメーション クライアント) に公開するアプリケーションのことです。 オートメーション サーバーは、オートメーション コンポーネントと呼ばれることもあります。

オートメーション オブジェクトが公開されると、クライアントは、サーバーが利用できるようにしたオブジェクトと機能に直接アクセスし、特定の処理を自動化できます。 アプリケーションがほかのアプリケーションでも役に立つ機能を備えている場合は、このようにしてオブジェクトを公開することは有益です。 たとえば、ワード プロセッサからスペル チェック機能を公開すると、ほかのアプリケーションでもその機能を活用できるようになります。 オブジェクトを公開すると、ほかのアプリケーションの既製の機能を利用できるようになるので、そのアプリケーションの機能が向上します。

オートメーション オブジェクトは、プロパティとメソッドを外部インターフェイスとして備えています。 プロパティとは、オートメーション オブジェクトの名前付き属性です。 プロパティは、C++ クラスのデータ メンバーと似ています。 メソッドとは、オートメーション オブジェクトで動作する関数です。 メソッドは、C++ クラスのパブリック メンバー関数と似ています。

注意

プロパティは C++ のデータ メンバーと似ていますが、直接アクセスすることはできません。 透過的にアクセスできるようにするには、アクセスのための get/set メンバー関数の対を備えた内部変数をオートメーション オブジェクト内に設定する必要があります。

標準的な仕様のインターフェイスを介してアプリケーションの機能を公開すると、多数あるアプリケーション固有のマクロ言語ではなく、Microsoft Visual Basic など、単一の汎用言語でアプリケーションを作成できるようになります。

オートメーション サーバーのサポート

Visual C++ および MFC フレームワークには、オートメーション サーバーに対する広範なサポートが用意されています。 オートメーション サーバーの作成に関するオーバーヘッドの多くは Visual C++ と MFC フレームワークによって処理されるので、開発者はアプリケーションの機能に集中できます。

オートメーションをサポートするためにフレームワークで利用される主要な機構はディスパッチ マップです。このマップはマクロの集合であり、各マクロはメソッドやプロパティを OLE に公開するために必要な宣言と呼び出しに展開されます。 次に示すのは、典型的なディスパッチ マップの例です。

BEGIN_DISPATCH_MAP(CMyServerDoc, COleServerDoc)
    DISP_PROPERTY(CMyServerDoc, "Msg", m_strMsg, VT_BSTR)
    DISP_FUNCTION(CMyServerDoc, "SetDirty", SetDirty, VT_EMPTY, VTS_I4)
END_DISPATCH_MAP()

ディスパッチ マップの維持管理には、[プロパティ] ウィンドウとクラス ビューを利用できます。 新しいメソッドまたはプロパティをクラスに追加すると、Visual C++ によって対応する DISP_FUNCTION マクロまたは DISP_PROPERTY マクロが作成されます。これらのマクロには、クラス名、メソッドまたはプロパティの外部名と内部名、およびデータ型を示すパラメーターがあります。

また、[クラスの追加] ダイアログ ボックスでも、オートメーション クラスの宣言およびそのプロパティと関数の管理を簡単に行うことができます。 [クラスの追加] ダイアログ ボックスを使ってクラスをプロジェクトに追加するときには、そのクラスの基本クラスを指定します。 基本クラスがオートメーション機能を備えている場合は、新しく作成するクラスでオートメーションをサポートするかどうか、"OLE クリエータブル" にするかどうか (つまり、COM クライアントの要求に応じてそのクラスのオブジェクトを作成できるようにするかどうか)、および COM クライアントが使用する外部名を [クラスの追加] ダイアログ ボックスで指定できるようになります。

この設定に従って、クラス宣言が生成されます。このクラス宣言には、指定した OLE 機能を利用するためのマクロが含まれています。 また、クラスのメンバー関数を実装するためのスケルトン コードも生成されます。

MFC アプリケーション ウィザードを利用することで、オートメーション サーバー アプリケーションの作成手順が簡略になります。 [高度な機能] ページの [オートメーション] チェック ボックスをオンにすると、MFC アプリケーション ウィザードは、アプリケーションの InitInstance 関数にいくつかの関数呼び出しを追加します。これらの呼び出しは、オートメーション オブジェクトを登録するときや、アプリケーションをオートメーション サーバーとして実行するときに必要です。

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

参照

参照

MFC アプリケーション ウィザード

概念

オートメーション