> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IFRDocumentEvents-Schnittstelle

> IFRDocumentEvents-Schnittstelle in der ABBYY FineReader Engine API — clientseitige Callback-Schnittstelle zur Meldung von Ereignissen (OnPageProcessed, OnProgress, OnWarning) von einem FRDocument an Listener.

Dies ist eine Callback-Schnittstelle, die dazu dient, Ereignisse vom Objekt [FRDocument](/de/fine-reader/engine/api-reference/document-related-objects/frdocument) an Listener zu übermitteln. Diese Schnittstelle wird clientseitig implementiert. Detaillierte Implementierungshinweise für Ihr Entwicklungstool finden Sie unter [Arbeiten mit verknüpfbaren Objekten](/de/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects). Nachfolgend finden Sie eine kurze Beschreibung:

* C++-Benutzer müssen die IFRDocumentEvents-Schnittstelle implementieren, einen Connection Point (Windows) abrufen und das Objekt, das die Schnittstelle implementiert, beim FRDocument-Objekt "registrieren". Da die Schnittstelle von der IUnknown-Schnittstelle abgeleitet ist, sollte das Client-Objekt auch die IUnknown-Methoden implementieren.
* Visual-Basic-Benutzer, die Benachrichtigungen vom FRDocument-Objekt erhalten möchten, sollten es als WithEvents deklarieren und Prozeduren ähnlich den folgenden implementieren:

```csharp theme={null}
Public WithEvents doc As FREngine.FRDocument
Private Sub doc_OnPageProcessed(ByVal sender As FRDocument, _
                                ByVal index As Integer, _
                                ByVal stage As PageProcessingStageEnum)
...
End Sub
```

Ein Objekt, das über die Methoden dieser Schnittstelle Benachrichtigungen erhält, kann innerhalb der Implementierung dieser Methoden Folgendes tun:

* Den Fortschritt des Bildladens, der Dokumentanalyse, der Erkennung, der Synthese und des Exports in Prozent melden.
* Informationen über die abgeschlossene Dokumentanalyse, Erkennung, Synthese und den abgeschlossenen Export melden.
* Unter Windows: Systemmeldungen verarbeiten, um zu verhindern, dass die Anwendung bei lang andauernden Vorgängen den Eindruck erweckt, nicht mehr zu reagieren. Dies kann bei Anwendungen mit Benutzeroberfläche hilfreich sein.

<div id="methods">
  ## Methoden
</div>

| Name                                                                                                                      | Beschreibung                                                                                                                              |
| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| [OnPageProcessed](/de/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onpageprocessed-method) | Übermittelt dem Client Informationen darüber, dass die Verarbeitung der Seite abgeschlossen ist.                                          |
| [OnProgress](/de/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onprogress-method)           | Übermittelt dem Client Informationen über den ungefähren Fortschritt des aktuellen Vorgangs (Laden von Bildern, Analyse, Erkennung usw.). |
| [OnWarning](/de/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onwarning-method)             | Übermittelt dem Client Hinweise und Warnungen, die während der Verarbeitung aufgetreten sind.                                             |

<div id="samples">
  ## Beispiele
</div>

Dieses Windows-C++-Beispiel zeigt, wie Sie einen Timer implementieren, der die Verarbeitung abbricht, wenn ein Methodenaufruf zu lange dauert.

<Accordion title="C++-Code (COM)">
  ```cpp theme={null}
  class CFRDocumentCallback: public IFRDocumentEvents {
  public:
      CFRDocumentCallback() : startTime( 0 ) {}
      // Implementieren Sie die IUnknown-Methoden
      ULONG STDMETHODCALLTYPE AddRef() { return 1; }
      ULONG STDMETHODCALLTYPE Release() { return 1; }
      HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppObject );
      HRESULT STDMETHODCALLTYPE OnProgress( IFRDocument* document, int percentage, VARIANT_BOOL* ShouldContinue );
      HRESULT STDMETHODCALLTYPE OnWarning( IFRDocument* document, int pageNumber, BSTR recognizerTip, 
          VARIANT_BOOL* ShouldContinue );
      HRESULT STDMETHODCALLTYPE OnPageProcessed( IFRDocument* document, int pageNumber, PageProcessingStageEnum stage );
      void FlushTimer();
      void SetShouldTrackTime( bool _shouldTrackTime );
  private:
      time_t startTime;
      bool shouldTrackTime = true;
  };
   
  // Rufen Sie die Methode FlushTimer auf, um startTime zurückzusetzen
  void CFRDocumentCallback::FlushTimer() {
      time( &startTime );
  }
   
  // Dieser Callback kann auch in anderen Methoden verwendet werden,
  // setzen Sie shouldTrackTime daher auf FALSE, wenn Sie das Timeout nicht mehr verwenden möchten
  void CFRDocumentCallback::SetShouldTrackTime( bool _shouldTrackTime ) {
      shouldTrackTime = _shouldTrackTime;
  }
   
  // Wenn die Differenz zwischen der aktuellen Zeit und „startTime“ einen bestimmten Schwellenwert überschreitet,
  // wird die Verarbeitung abgebrochen
  HRESULT STDMETHODCALLTYPE CFRDocumentCallback::OnProgress( IFRDocument* frDocument, 
      int percentage, VARIANT_BOOL* shouldTerminate )
  {
      if( shouldTrackTime ) {
          time_t currentTime;
          time( ¤tTime );
          double seconds = difftime( currentTime, startTime );
          printf( "%f\n", seconds );
          *shouldTerminate = ( seconds > 100 ? VARIANT_TRUE : VARIANT_FALSE );
      }
      return S_OK;
  }
  ```
</Accordion>

Dieses Objekt wird in den folgenden Codebeispielen verwendet: [EventsHandling](/de/fine-reader/engine/guided-tour/samples#eventshandling) (Windows und Linux).

<div id="remarks">
  ## Hinweise
</div>

Unter Linux funktioniert diese Schnittstelle nicht, wenn das Engine-Objekt als Out-of-Process-Server geladen ist.

<div id="see-also">
  ## Siehe auch
</div>

[FRDocument](/de/fine-reader/engine/api-reference/document-related-objects/frdocument)

[Arbeiten mit verknüpfbaren Objekten](/de/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects)
