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