Einzelnen Beitrag anzeigen

bekrause

Registriert seit: 31. Mär 2003
Ort: Essen
24 Beiträge
 
Delphi XE Professional
 
#1

Chromium CEF3 DLL "blockiert"

  Alt 6. Jul 2016, 14:06
Hallo,

ich stehe vor einem (für mich) bisher nicht lösbaren Problem.

Ich habe ein Programm, welches den Quelltext des Browser auswertet (u.a. mit regulären Ausrücken). Um auch zukünftig eine gewisse Kompatibilität zu erhalten, möchte ich von CES1 auf CES3 wechseln. Grundsätzlich funktioniert das auch ganz gut. Lediglich der Quelltext der Webseite wird nicht richtig ausgelesen.

Bei CES1 konnte ich den Quelltext simpel mit "getsource" in einem String speichern. Bei CEF3 funktioniert das über eine Callbackfunktion.

Um das Programm fortzuführen (z.B. um zu entscheiden, ob eine Webseite weiter gescrollt werden muss oder nicht) muss der Quelltext untersucht werden. Jetzt ist es aber so, dass die Callbackfunktion nicht aufgerufen wird, wenn ich mit dem Hauptprogramm mit einer Repeat - Application.processmessage Schleife auf die Callbackfunktion warte. Wenn ich auf eine Auswertung des Quelltextes verzichte, und die Bearbeitung nach Quelltexterhebung unterbreche, wir die Callbackfunktion sofort aufgerufen.
Die Repeat schleife scheint also das Aufrufen der Callbackfuntkion zu verhindern.

Hier mein Code:

Delphi-Quellcode:
  procedure HTMLSourceCallback(const str: ustring);
  begin
    //str is the SourceHtml
    FBrowserSource := str;
    FBrowserGetSourceBusy := False;
  end;
Delphi-Quellcode:
function TBrowserCES3.GetSource: string;
begin
  FBrowserSource := '';
  FBrowserGetSourceBusy := true;
  FBrowser.Browser.MainFrame.GetSource(TCefFastStringVisitor.Create(HTMLSourceCallback));
  repeat
    application.ProcessMessages;
    sleep(10);
  until FBrowserGetSourceBusy = False;
  Result := FBrowserSource;
end;
Kann ich CEF3 irgendwie dazu bringen, auch innerhalb der Repeatschleife weiterzuarbeiten und die Callbackfunktion aufzurufen? Oder habe ich einen Denkfehler?

Schon mal Danke

Benno
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius
  Mit Zitat antworten Zitat