Main Content

COM オブジェクトの作成

関数 actxserver を使用して、ダイナミック リンク ライブラリ (DLL) コンポーネントのインプロセス サーバー、または実行可能ファイル (EXE) コンポーネントのアウトプロセス サーバーを作成します。

DLL コンポーネントのインスタンス化

ダイナミック リンク ライブラリ (DLL) として実装されたコンポーネントのサーバーを作成するには、関数 actxserver を使用します。MATLAB® は、クライアント アプリケーションを含むプロセスと同じ方法でコンポーネントのインスタンスを作成します。

関数 actxserver の構文は、DLL コンポーネントと使用した場合は actxserver(ProgID) となります。ここで、ProgID はコンポーネントのプログラム識別子です。

関数 actxserver は、オブジェクトへのプライマリ インターフェイスにハンドルを返します。このハンドルを使って、他の COM 関数の呼び出しでオブジェクトを参照します。また、ハンドルを使用してオブジェクトへの追加インターフェイスを取得することもできます。インターフェイスの使用の詳細は、COM オブジェクト インターフェイスを参照してください。

Microsoft® ActiveX® コントロールとは異なり、サーバーにより表示されるユーザー インターフェイスは別のウィンドウに表示されます。

32 ビット インプロセス DLL COM オブジェクトを、64 ビット MATLAB アプリケーションで使用することはできません。この制約の詳細については、Why am I not able to use 32-bit DLL COM Objects in 64-bit MATLAB? を参照してください。

EXE コンポーネントのインスタンス化

関数 actxserver を使って、実行可能ファイル (EXE) として実装されたコンポーネントにサーバーを作成できます。この場合、MATLAB は、アウトプロセス サーバーでコンポーネントをインスタンス化します。

実行可能ファイルを作成する actxserver の構文は actxserver(ProgID, sysname) です。ProgID はコンポーネントのプログラム識別子、そして sysname は分散 COM (DCOM) システムの構成に使用するオプションの引数です。

関数 actxserver は、COM オブジェクトへのプライマリ インターフェイスにハンドルを返します。このハンドルを使って、他の COM 関数の呼び出しでオブジェクトを参照します。また、ハンドルを使用してオブジェクトへの追加インターフェイスを取得することもできます。インターフェイスの使用の詳細は、COM オブジェクト インターフェイスを参照してください。

サーバーにより表示されるユーザー インターフェイスは、別のウィンドウに表示されます。

この例では、Microsoft Excel® スプレッドシート プログラムを実行する COM サーバー アプリケーションを作成します。ハンドルは、h に割り当てられます。

h = actxserver('Excel.Application')

MATLAB に以下のように表示されます。

h =
    COM.excel.application

MATLAB は、コンピューターで既に実行している COM オートメーション サーバー アプリケーションのインスタンスにプログラムから接続します。アプリケーションなどへの参照を取得するには、関数 actxGetRunningServer を使用します。

この例では、Excel プログラムへの参照を取得します。この場合、プログラムがシステムで既に実行されていなければなりません。返されたハンドルは、h に割り当てられます。

h = actxGetRunningServer('Excel.Application')

MATLAB に以下のように表示されます。

h =
    COM.excel.application

参考

|