ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

COM オブジェクトへのインターフェイスの取得

IUnknown および IDispatch インターフェイス

関数 actxserver または関数 actxcontrol を呼び出すと、MATLAB® ソフトウェアはサーバーを作成し、プロパティとメソッドにアクセスする方法としてサーバー インターフェイスにハンドルを返します。ソフトウェアは次のプロセスを使用して、返すハンドルを決定します。

  1. まず、コンポーネントから IUnknown インターフェイスのハンドルを取得します。このインターフェイスを実装するにはすべての COM コンポーネントが必要です。

  2. IDispatch インターフェイスの取得を試行します。IDispatch が実装されている場合は、このインターフェイスのハンドルを返します。IDispatch が実装されている場合は、IUnknown のハンドルを返します。

追加のインターフェイス

多くの場合、コンポーネントには IDispatch に基づいてプロパティとして実装される追加のインターフェイスが用意されています。その他のプロパティの場合と同様に、MATLAB の関数 get を使用してこれらのインターフェイスを取得します。

たとえば、Microsoft® Excel® コンポーネントには多くのインターフェイスが含まれています。これらのインターフェイスを Excel プロパティと共にリストするには、以下を入力します。

h = actxserver('Excel.Application');
get(h)

MATLAB によって、以下の情報が表示されます。

    Application: [1x1 Interface.Microsoft_Excel_9.0_
Object_Library._Application]
        Creator: 'xlCreatorCode'
         Parent: [1x1 Interface.Microsoft_Excel_9.0_
Object_Library._Application]
     ActiveCell: []
    ActiveChart: [1x50 char]
                 .
                 .

Workbooks がインターフェイスかどうかを確認するには、以下を入力します。

w = h.Workbooks

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

w =
   Interface.Microsoft_Excel_9.0_Object_Library.Workbooks

表示される情報は使用するシステムの Excel ソフトウェアのバージョンによって異なります。

MATLAB での Excel の使用例は、以下の節を参照してください。

カスタム インターフェイス

MATLAB COM インターフェイスは、次のクライアントとサーバー構成に対してカスタム インターフェイスをサポートしています。

カスタム インターフェイスのサポートには以下の制限があります。

  • MATLAB の 64 ビット バージョンでは、カスタム インターフェイスはサポートされていません。

  • オプションのパラメーターをもつ関数を呼び出すことはできません。

サーバーを作成したら、関数 interfaces を使用してサーバー コンポーネントをクエリし、任意のカスタム インターフェイスが実装されているかどうかを確認できます。

たとえば、ProgID mytestenv.calculator をもつコンポーネントがある場合、次のコマンドを使用してそのカスタム インターフェイスを確認できます。

h = actxserver('mytestenv.calculator');
customlist = h.interfaces

MATLAB には、次のようなインターフェイスが表示されます。

customlist =
   ICalc1
   ICalc2
   ICalc3

特定のインターフェイスのハンドルを取得するには、関数 invoke を使用します。

c1 = invoke(h,'ICalc1')
c1 =
   Interface.Calc_1.0_Type_Library.ICalc_Interface

このハンドル c1 を使用して、このカスタム インターフェイス ICalc1 を介してオブジェクトのプロパティとメソッドにアクセスします。

たとえば、プロパティをリストするには、以下のコマンドを使用します。

get(c1)
     background: 'Blue'
         height: 10
          width: 0

メソッドをリストするには、以下のコマンドを使用します。

invoke(c1)
   Add = double Add(handle, double, double)
   Divide = double Divide(handle, double, double)
   Multiply = double Multiply(handle, double, double)
   Subtract = double Subtract(handle, double, double)

オブジェクトの Add および Multiply メソッドを使用して数値の加算と乗算を行うには、以下のコマンドを使用します。

sum = Add(c1,4,7)
sum =
    11

prod = c1.Multiply(4, 7)
prod =
    28
この情報は役に立ちましたか?