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

オートメーションを使用すると、アプリケーションが別のアプリケーションで実装されているオブジェクトを操作したり、オブジェクトを公開して操作できるようにしたりすることができます。Automation makes it possible for your application to manipulate objects implemented in another application, or to expose objects so they can be manipulated. オートメーションサーバーは、(オートメーションオブジェクトと呼ばれる) プログラミング可能なオブジェクトを他のアプリケーション ( オートメーションクライアントと呼びます) に公開するアプリケーションです。An Automation server is an application that exposes programmable objects (called Automation objects) to other applications (called Automation clients). オートメーションサーバーは、オートメーションコンポーネントと呼ばれることもあります。Automation servers are sometimes called Automation components.

オートメーションオブジェクトを公開すると、クライアントは、サーバーによって使用可能になるオブジェクトや機能に直接アクセスして、特定のプロシージャを自動化できます。Exposing Automation objects enables clients to automate certain procedures by directly accessing the objects and functionality the server makes available. この方法でオブジェクトを公開すると、他のアプリケーションに便利な機能をアプリケーションが提供する場合に便利です。Exposing objects this way is beneficial when applications provide functionality that is useful for other applications. たとえば、ワードプロセッサではスペルチェック機能が公開され、他のプログラムで使用できるようになります。For example, a word processor might expose its spell-checking functionality so that other programs can use it. オブジェクトの公開により、ベンダーは、他のアプリケーションの既製の機能を使用して、アプリケーションの機能を向上させることができます。Exposure of objects thus enables vendors to improve their applications' functionality by using the ready-made functionality of other applications.

これらのオートメーションオブジェクトには、プロパティとメソッドが外部インターフェイスとして含まれています。These Automation objects have properties and methods as their external interface. プロパティは、オートメーションオブジェクトの名前付き属性です。Properties are named attributes of the Automation object. プロパティは、C++ クラスのデータメンバーに似ています。Properties are like the data members of a C++ class. メソッドは、オートメーションオブジェクトに対して機能する関数です。Methods are functions that work on Automation objects. メソッドは、C++ クラスのパブリックメンバー関数に似ています。Methods are like the public member functions of a C++ class.

注意

プロパティは C++ データメンバーに似ていますが、直接アクセスすることはできません。Although properties are like C++ data members, they are not directly accessible. 透過的なアクセスを提供するには、get/set メンバー関数のペアを使用してオートメーションオブジェクトに内部変数を設定し、それらにアクセスします。To provide transparent access, set up an internal variable in the Automation object with a pair of get/set member functions to access them.

共通の明確に定義されたインターフェイスを使用してアプリケーションの機能を公開することにより、さまざまなアプリケーション固有のマクロ言語ではなく、Microsoft Visual Basic のような単一の汎用プログラミング言語でアプリケーションを構築できるようになります。By exposing application functionality through a common, well-defined interface, Automation makes it possible to build applications in a single general programming language like Microsoft Visual Basic instead of in diverse, application-specific macro languages.

オートメーションサーバーのサポートSupport for Automation Servers

Visual C++ と MFC フレームワークは、オートメーションサーバーの広範なサポートを提供します。Visual C++ and the MFC framework provide extensive support for Automation servers. 自動化サーバーの作成に伴うオーバーヘッドの多くを処理するため、アプリケーションの機能に専念することができます。They handle much of the overhead involved in making an Automation server, so you can focus your efforts on the functionality of your application.

オートメーションをサポートするためのフレームワークの主要なメカニズムはディスパッチマップです。これは、OLE のメソッドとプロパティを公開するために必要な宣言と呼び出しに展開される一連のマクロです。The framework's principal mechanism for supporting Automation is the dispatch map, a set of macros that expands into the declarations and calls needed to expose methods and properties for OLE. 一般的なディスパッチマップは次のようになります。A typical dispatch map looks like this:

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()

クラスウィザードとクラスビューは、ディスパッチマップを維持するのに役立ちます。The Class Wizard and Class View assist in maintaining dispatch maps. 新しいメソッドまたはプロパティをクラスに追加すると、Visual Studio によって、対応するまたはマクロが追加され DISP_FUNCTION DISP_PROPERTY ます。このパラメーターには、クラス名、メソッドまたはプロパティの外部名と内部名、およびデータ型を示すパラメーターがあります。When you add a new method or property to a class, Visual Studio adds a corresponding DISP_FUNCTION or DISP_PROPERTY macro with parameters indicating the class name, external and internal names of the method or property, and data types.

[ クラスの追加 ] ダイアログボックスでは、オートメーションクラスの宣言と、それらのプロパティと操作の管理も簡略化されます。The Add Class dialog box also simplifies the declaration of Automation classes and the management of their properties and operations. [クラスの追加] ダイアログボックスを使用してクラスをプロジェクトに追加する場合は、その基本クラスを指定します。When you use the Add Class dialog box to add a class to your project, you specify its base class. 基底クラスでオートメーションが可能な場合、[クラスの追加] ダイアログボックスには、新しいクラスがオートメーションをサポートする必要があるかどうかを指定するために使用するコントロールが表示されます。これは、"OLE 作成可能" (つまり、クラスのオブジェクトを COM クライアントからの要求に対して作成できるかどうか)、COM クライアントが使用If the base class allows Automation, the Add Class dialog box displays controls you use to specify whether the new class should support Automation, whether it is "OLE creatable" (that is, whether objects of the class can be created on a request from a COM client), and the external name for the COM client to use.

次に、[ クラスの追加 ] ダイアログボックスで、指定した OLE 機能に適したマクロを含むクラス宣言が作成されます。The Add Class dialog box then creates a class declaration, including the appropriate macros for the OLE features you have specified. また、クラスのメンバー関数の実装のスケルトンコードも追加します。It also adds the skeleton code for implementation of your class's member functions.

MFC アプリケーションウィザードを使用すると、オートメーションサーバーアプリケーションを開始する際に必要な手順を簡略化できます。The MFC Application Wizard simplifies the steps involved in getting your automation server application off the ground. [高度な機能] ページで [オートメーション] チェックボックスをオンにすると、MFC アプリケーションウィザードは、 InitInstance オートメーションオブジェクトを登録し、アプリケーションをオートメーションサーバーとして実行するために必要な呼び出しをアプリケーションの関数に追加します。If you select the Automation check box from the Advanced Features page, the MFC Application Wizard adds to your application's InitInstance function the calls required to register your Automation objects and run your application as an Automation server.

どうしたいんですかWhat do you want to do

関連項目See also

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