OLE項目やActiveX項目が定義されたタスクをオープンすると、Magicエンジン は定義されたオブジェクトを自動的にインスタンス化します。
[コールCOM]処理コマンドは、インスタンス化されたオブジェクトを呼び出します。
ActiveXオブジェクトがMagicプロジェクトによって処理されたイベントをトリガすると、対応するハンドラが実行されます。
オブジェクトをインスタンス化したタスクが終了すると、オブジェクトは自動的に解放されます。
パラメータとしてオブジェクトを渡す
パラメータとしてOLEオブジェクトを別のタスクに渡すことができます。これによって、パラメータを渡されたタスクは、継続してオブジェクトを処理することができます。
この場合、起動されるタスクでは、パラメータ項目を定義する必要があります。このタスクは、[コールCOM]処理コマンドや、[イベント]ロジックユニットを使用してオブジェクトを処理するようにプログラムを作成することができます。これによって、起動するタスクはインスタンス化されたオブジェクトを渡すことができます。
この時、パラメータ項目の[インスタンス化]特性は、「N=なし」にしてください。これは、このパラメータ項目が COM オブジェクトをインスタンス化するのではなく、すでにインスタンス化されているオブジェクトを参照していることを意味しています。
オブジェクトを手動でインスタンス化する
OLE項目 やActiveX 項目のデフォルト設定は、これらの項目が定義されたタスクをオープンした時に、Magicエンジンによって自動的にオブジェクトがインスタンス化されるように設定されています。タスクが終了するとそのオブジェクトは解放されます。
オブジェクトを手動でインスタンス化したり解放したい場合は、項目特性の[インスタンス化]の指定を「N=なし」 に指定し、 COMObjCreate や COMObjRelease 関数を使用してオブジェクトの作成や解放を行ってください。
注意: |
[インスタンス化]特性が無効な場合、オブジェクトは手動で作成できません。 |
作成されたオブジェクトの参照
全ての COM オブジェクトは、「ハンドル」という内部管理番号を持っています。
タスク上でオブジェクトを手動でインスタンス化し、そのハンドルを保持し、そのハンドルを使用してオブジェクトを別のタスクから参照させることができます。
このような処理は、COMHandleGetやCOMHandleSet関数を使用して行います。
COMのエラーの取得
COMError関数を使用して、最後に発生したCOMのエラーに関する情報を取得することができます。