Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi PDF in TWebBrowser - Absturz beim Schliessen der Form (https://www.delphipraxis.net/154945-pdf-twebbrowser-absturz-beim-schliessen-der-form.html)

marcos 2. Okt 2010 14:01

PDF in TWebBrowser - Absturz beim Schliessen der Form
 
Hallo,

eine PDF-Datei in einem TWebBrowser anzuzeigen ist an sich ganz einfach.
Ich habe leider damit ein Problem. Wenn ich nach der Anzeige die Form (das Programm) schliesse, dann bekomme ich die Meldung:
"Project ... faulted with message: 'system exception (code 0xe06d7363) at 0x76e3b727'"
Hat jemand eine Idee was ist hier falsch?

Gruß
marcos

Meine Umgebung: Delphi 2010; Win7/64

Testprogramm:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    pbOpenFile: TButton;
    pbCloseFile: TButton;
    WebBrowser1: TWebBrowser;
    procedure pbCloseFileClick(Sender: TObject);
    procedure pbOpenFileClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.pbCloseFileClick(Sender: TObject);
begin
   WebBrowser1.Navigate('about:blank');
end;

procedure TForm1.pbOpenFileClick(Sender: TObject);
begin
   WebBrowser1.Navigate('file:///' +'c:\temp\myTest.pdf');
end;

end.

Bernhard Geyer 3. Okt 2010 10:54

AW: PDF in TWebBrowser - Absturz beim Schliessen der Form
 
Zitat:

Zitat von marcos (Beitrag 1053325)
Meine Umgebung: Delphi 2010; Win7/64

Und welche Acrobat-Version? Bei dieser Windows-Version wird nur ein voll gepatchter Acrobat 9 funktionsfähig sein.

marcos 3. Okt 2010 21:51

AW: PDF in TWebBrowser - Absturz beim Schliessen der Form
 
Acrobat 9.3.4 - "keine neue Updates verfügbar".

marcos

ULIK 4. Okt 2010 06:54

AW: PDF in TWebBrowser - Absturz beim Schliessen der Form
 
So dunkel kann ich mich erinnern, daß ich das auch mal gehabt hab: ich glaub, Du mußt vor dem Beenden zu 'about:blank' navigieren, so daß sich das Reader Plugin entladen kann.

Grüße,
Uli

Daniela.S 4. Okt 2010 08:04

AW: PDF in TWebBrowser - Absturz beim Schliessen der Form
 
@Uli: er navigiert ja schon auf "about:blank"

Das alleine hilft aber nicht. Es gibt einen Fehler im Acrobat, der Adobe schon lange bekannt ist und der beim Beenden manchmal eine Zugriffsverletzung verursacht.

Um das zu vermeiden sollte man zuerst auf "about:blank" gehen und auch wirklich warten bis diese Seite komplett geladen ist. Danach CoFreeUnusedLibraries aufrufen.

ULIK 4. Okt 2010 08:14

AW: PDF in TWebBrowser - Absturz beim Schliessen der Form
 
@Daniela: nur wenn der TE den Button drückt :wink:

Daß der Fehler Adobe bekannt ist, wußte ich nicht. Danke für den Tip mit CoFreeUnusedLibraries. Werd ich demnächst mal einbauen und ausprobieren.


Grüße,
Uli

toms 4. Okt 2010 11:24

AW: PDF in TWebBrowser - Absturz beim Schliessen der Form
 
Evtl. den Browser noch freigeben beim Beenden.

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Hide;
  WebBrowser1.Navigate('about:blank');
  while WebBrowser1.Busy do
      Application.ProcessMessages;

  WebBrowser1.Free;
  CoFreeUnusedLibraries; // Unit ActiveX
end;

marcos 4. Okt 2010 19:32

AW: PDF in TWebBrowser - Absturz beim Schliessen der Form
 
Daniela,

"ten points" :), damit funktioniert, danke.

Gruß
marcos


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz