instance method WIN32OLE#ole_activex_initialize

ole_activex_initialize -> nil[permalink][rdoc][edit]

ActiveXコントロール用の初期化を行います。

ole_activex_initializeメソッドは、スクリプト内でActiveXコントロールを利用できるように、オブジェクトが持つ永続化データを初期化します。

ActiveXコントロール(OCX)は、主にUI用に利用されるOLEオートメーションサーバです。ActiveXコントロールは、IDEを利用した開発時と、プログラムの実行時の2種類の実行モードを持ちます。これは、開発時の設定を永続化するためです。

幾つかのActiveXコントロールは、上記の動作を前提に組まれているため、実行に先だって永続化データの転送をデータの有無と関係なく要求します。この場合、もし永続化データを初期化しないと、実行時モード状態へ遷移せず、後続のメソッド呼び出しがすべてエラーとなります。

[EXCEPTION] WIN32OLERuntimeError:
オブジェクトがActiveXコントロールの永続化インターフェイスを持たない場合に通知します。
obj = WIN32OLE.new("ProgID_or_GUID_of_ActiveX_Control")
obj.ole_activex_initialize
obj.method(...)

なお、生成したOLEオートメーションサーバが永続化データの初期化を必要とするActiveXコントロールか、そうでないかを簡単に区別する方法はありません。そのため、とりあえず普通にメソッドを呼び出し、その結果 WIN32OLERuntimeErrorが通知され、メッセージにHRESULT 0x8000ffffと示されている場合にのみ、オブジェクト生成直後に当メソッドを呼び出してみてください。

また、オブジェクトによっては、当メソッドの呼び出しにより後続のデータを要求してハングアップする場合があります。その場合は、Ctrl-Cなどによって実行を中止してください。