メインコンテンツへスキップ
ABBYY FineReader Engine の一部のオブジェクトは、いわゆる「connectable objects」です。つまり、これらのオブジェクトは IConnectionPointContainer インターフェイスを実装しています。connectable objects は、ABBYY FineReader Engine とクライアントとの通信をサポートします。
Linux では、アウトオブプロセスサーバーとして読み込まれた Engine オブジェクトでは、コールバックを使用した処理はサポートされていません。
Windows ユーザー向けに、各 FRE connectable object では 2 種類の接続ポイントが提供されます。1 つは dispatch インターフェイスを使用するもの、もう 1 つは IUnknown から派生したインターフェイスを使用するものです。dispatch インターフェイスは Visual Basic などの環境で自動的に使用されるよう設計されており、vtbl ベースのインターフェイスは C++ での使用に適しています。
以下の表に、ABBYY FineReader Engine の connectable objects と、それぞれに対応する Callback インターフェイス (dispinterface) の一覧を示します。
dispinterface は Windows 固有です。
オブジェクトCallback インターフェイス (Dispinterface)
FRDocumentIFRDocumentEvents (DIFRDocumentEvents)
FRPagesIFRPagesEvents (DIFRPagesEvents)
FRPageIFRPageEvents (DIFRPageEvents)
ImageDocumentIImageDocumentEvents (DIImageDocumentEvents)
Windows ビジュアルコンポーネント ABBYY FineReader Engine で特定のイベント通知を受け取りたいクライアントアプリケーションは、特定の型のインターフェイスを実装し、それらのインターフェイスを実装するオブジェクトを対応する connectable objects に「advise」する必要があります。
通知ソースへの接続と切断には、2 つのグローバル メソッドを使用します。
これらのメソッドには、object 引数として Connectable Objects のいずれかを、callback 引数として対応する Callback インターフェイスを渡す必要があります。必要なインターフェイスを実装し、そのインターフェイスを実装したオブジェクトを、対応する Connectable Objects に対して “advise” する必要があります。ここでは、FRDocument オブジェクトを例として使用します。
  1. IFRDocumentEvents インターフェイスを実装します。これは IUnknown インターフェイスから派生しているため、クライアント オブジェクトでは IUnknown メソッドも実装する必要があります。
  2. その後、CFRDocumentCallback クラスを使用して FRDocument オブジェクトから通知を受け取ることができます。このオブジェクトを通知ソースに advise します (エラー処理は省略しています) 。
Linux ユーザーは、EventsHandling サンプルも参照できます。
このトピックの残りは、Windows 版 FRE のユーザーに適用されます。
Windows の場合:
Connectable Objects を WithEvents で宣言し、対応する Callback インターフェイスのメソッドを実装するだけです。また、イベントに関連付けるイベント ハンドラーを明示的に指定する必要もあります。FRDocument オブジェクトでは、手順は次のようになります。
  1. FRDocument オブジェクトを WithEvents で宣言します。
  1. 次の例のように、Sub 内で DIFRDocumentEvents dispinterface の必要なメソッドを実装します。
プログラムの実行中に任意のタイミングでイベント処理を開始および停止する場合 (AddHandler ステートメントと RemoveHandler ステートメントを使用) :または、このプロシージャが特定のイベントを処理することを指定します (定義時に Handles キーワードを使用) :
  1. 実装したイベント ハンドラーをイベント ソースに接続し、FRDocument オブジェクトを使用して処理を実行したら、ハンドラーを切断します。
C++ では、必要なインターフェイスを実装し、接続ポイントを取得して、そのインターフェイスを実装するオブジェクトを対応する connectable objects に「advise」する必要があります。ここでは FRDocument オブジェクトを例に説明します。
  1. IFRDocumentEvents インターフェイスを実装します。これは IUnknown インターフェイスから派生しているため、クライアントオブジェクトでは IUnknown のメソッドも実装する必要があります。
  1. その後、CFRDocumentEventsListener クラスを使用して FRDocument オブジェクトから通知を受け取ることができます。このオブジェクトを通知ソースに advise します (エラー処理は省略しています) 。
C# の手順は Visual Basic .NET の場合と似ています。コールバックインターフェイスの必要なメソッドを実装し、実装したイベントハンドラーをイベントソースに接続する必要があります。ここでは FRDocument オブジェクトを例に説明します。
  1. IFRDocumentEvents インターフェイスの必要なメソッドを実装します。
  1. イベントハンドラーをイベントソースに接続し、FRDocument オブジェクトで処理を実行した後、ハンドラーを切断します。
Windows ユーザーは、connectable objects の詳細について COM のドキュメントを参照してください。 Linux 版 FRE の C++ 向け、および Windows 版 FRE の C#、Native COM Support を使用する C++、raw C++、Visual Basic .NET 向けに提供されている EventsHandling サンプルも参照できます。