![]() |
LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Hallo,
ich habe einige html-Dateien mit exe gepackt. Auf Form habe ich einen Webbrowser1 Nun möchte ich eine html in meinen Webbrwoser1 laden Der html-Name wird in der ListBox1 auch gelistet wie kann ich die html Datei (die mit exe gepackt) in Webbrwoser laden? ich habe so versucht:
Delphi-Quellcode:
//webbrwoser funktion procedure LoadHTMLToWebbrowser(AWebBrowser: TWebBrowser; AHTMLCode: TStrings); var myDocument:OleVariant; begin //falls nötig, leere Seite anzeigen if AWebBrowser.Document = nil then AWebBrowser.Navigate('about:blank'); //HTML-Code in TWebBrowser.Document schreiben myDocument:=AWebBrowser.Document; myDocument.Clear; myDocument.Write(AHTMLCode.Text); myDocument.Close; end; procedure TForm1.Button2Click(Sender: TObject); begin LoadHTMLToWebBrowser(Webbrowser1,ListBox1.Items); //wird leider nur den html-Namen in Webbrowser angezeigt end; procedure TForm1.Button2Click(Sender: TObject); begin LoadHTMLToWebBrowser(Webbrowser1,'01.htm');// geht auch nicht end; end. |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Du sagst du hast die HTML-Datei in die Exe gepackt also musst du wohl
![]() |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Gruß |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
So geht's:
Delphi-Quellcode:
Aufruf:
procedure WaitForBrowser(WebBrowser:TWebBrowser);
begin while WebBrowser.ReadyState <> READYSTATE_COMPLETE do begin Application.ProcessMessages; Sleep(50); end; end; procedure Document_SetHTML(Document: IDispatch; const HTMLCode: string); var ms: TStringStream; begin if Assigned(Document) then begin ms := TStringStream.Create(HTMLCode); try ms.Seek(0, 0); OleCheck((Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms))); finally ms.Free; end; end; end; function Document_GetHTML(Document: IDispatch):string; var ms: TStringStream; begin Result := ''; if Assigned(Document) then begin ms := TStringStream.Create(Result); try OleCheck((Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms),False)); Result := ms.DataString; finally ms.Free; end; end; end; procedure WB_SetHTML(WebBrowser: TWebBrowser; const HTMLCode: string); begin if not Assigned(WebBrowser.Document) then WebBrowser.Navigate('about:blank'); WaitForBrowser(WebBrowser); Document_SetHTML(WebBrowser.Document, HTMLCode); end; function WB_GetHTML(WebBrowser: TWebBrowser): string; begin Result := Document_GetHTML(WebBrowser.Document); end;
Delphi-Quellcode:
WB_SetHTML(WebBrowser1, AHTMLCode.Text);
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Hallo,
was ist mit AHTMLCode?
Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
//var: AHTMLCode: String; begin WB_SetHTML(WebBrowser1, AHTMLCode.Text); end; ![]() |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Delphi-Quellcode:
Wie man aus dem obigen Code erkennen kann, wird der HTML Code als String im zweiten Parameter
procedure WB_SetHTML(WebBrowser: TWebBrowser; const HTMLCode: string);
begin if not Assigned(WebBrowser.Document) then WebBrowser.Navigate('about:blank'); WaitForBrowser(WebBrowser); Document_SetHTML(WebBrowser.Document, HTMLCode); end; übergeben. Wie diese Variable bei Dir heißt, das weißt nur Du. Grüße Klaus |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
"AHTMLCode" ist eine Stringliste aus deinem Code. Die Procedure WB_SetHTML() erwartet zwei Parameter: ein WebBrowser-Objekt und einen String, der HTML-Code enthält. Nur du kannst wiessen, aus welchen Variable/Komponente der HTML-Code herkommt. |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
String, der html-Code enthält : Vielleicht so :
Delphi-Quellcode:
WB_SetHTML(WebBrowser1, ListBox1.Items[0]); // es wird wieder nur der Dateiname angezeigt und nicht der Inhalt !
![]() |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Delphi-Quellcode:
var Dateiinhalt: TStringList;
begin Dateiinhalt := TStringList.Create; try Dateiinhalt.LoadFromFile(ListBox1.Items[0]); WB_SetHTML(WebBrowser1, Dateiinhalt); finally FreeAndNil(Dateiinhalt); end; end; |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Was steht denn in Listbox1.Items[0]
vielleicht der Dateiname zu der Datei die den HTML Code beinhaltet? Grüße Klaus |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Sag doch gleich, dass du nur eine lokale Datei hast.
Delphi-Quellcode:
var
filename:string; begin filename := ListBox1.Items[0]; {<= lokale Datei mit der Endung htm} if FileExists('file:'+filename) then WebBrowser1.Navigate( filename) else raise Exception.CreatFmt('Datei %s nicht gefunden', [filename]); |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
![]() |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
die Datei test.html nicht gefunden Die Datei existiert schon und ist mit exe angehängt!!! Die html Datei ist angehängt, da die exe Größe deutlich großer geworden, nachdem ich die Datei angehängt habe. Der Code findet die Datei in Exe nicht oder? |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Dateiinhalt.Text und denk doch einfach mal selbst nach, himmel herr gott, dass kann doch nicht wahr sein :evil:
Und zeig doch endlich mal den Code, mit dem du deine HTML-Dateien an die Exe anhängst!!! WIR HABEN IMMER NOCH KEINE GLASKUGELN!!! |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Hi
nun nach der Bemerkung von Die Muhkuh funktioniert der Code von DeddyH :firejump: Danke!
Delphi-Quellcode:
var Dateiinhalt: TStringList;
begin Dateiinhalt := TStringList.Create; try Dateiinhalt.LoadFromFile(ListBox1.Items[0]); WB_SetHTML(WebBrowser1, Dateiinhalt.text); finally FreeAndNil(Dateiinhalt); end; end; Die Seite wird in Webbrowser1 geladen. ![]() Es gibt aber ein Problem :( . Warum kann ich die Seite 2 von Seite 1 nicht aufrufen!!! Wenn ich auf den Link "Seite 2" anklicke dann wird der html Name angezeigt und nicht der Inhalt !!! ![]() |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Code? Wie rufst du auf? Mensch, rück doch einfach mal Infos raus!!!
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
über ein Button :
Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
var Dateiinhalt: TStringList; begin Dateiinhalt := TStringList.Create; try Dateiinhalt.LoadFromFile(ListBox1.Items[0]); WB_SetHTML(WebBrowser1, Dateiinhalt.text); finally FreeAndNil(Dateiinhalt); end; end; |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Was sagt der Debugger, wenn Du diese Zeilen debuggst?
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Und wieso hast Du nicht gemerkt, dass Du immer dieselbe Datei lädst?
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Ich rufe die Seite 2 nicht über das Button sondern über den Link in Seite 1 (sehe Bild oben) ja weiß ich schon, dass das Button immer die selbe Datei lädt
Code:
ich möchte nur eine Datei über das Button aufrufe, alle andere werde ich von dem 1. html Datei aufrufen.
Dateiinhalt.LoadFromFile(ListBox1.Items[0]);
------ |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Zeige doch einmal den Link oder den Quellcode der HTML Seite 1. Grüße Klaus |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Wo liegen deine HTML-Dateien? Im Anwendungsverzeichnis?
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Was ich auch bemerkt. Es wird nur html als text in Webbrwoser1 geladen, die Bilder aber, die auf html sind, werden nicht angezeigt!!! ![]() Also 2 Probleme habe ich :cry: 1. Navigation in Webbrowser1 funktioniert nicht (es wird der html-Name angezeigt statt der Inhalt). 2. Problem: Nur Text von html werden angezeigt, Bilder nicht!!! Gruß ------------------- |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Weil Du Knallkopf vor dem Anzeigen vllt. das ganze Zeugs aus deiner exe extrahieren musst? Warum steckt das überhaupt in der Exe? Mach dir nen Ordner data und schreib da dein HTML-Zeugs rein und lad es von dort!
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Es soll eine Lösung geben oder? Gru? --------- |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Mit etwas Arbeit könnte es eine Lösung geben.
Vielleicht kannst Du im onNavigate der Webbrowsers die Dateien/Daten extrahieren und wie gehabt dem Webbrowser übergeben. Grüße Klaus |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Was heißt mehr Sicherheit? Wenn Du nicht willst, dass es jemand ändert, dann verschlüssel es z.B. mit dem
![]() Mit der EXE wird auch gehen, aber zeig doch verdammt nochmal deinen Code und debugge, wenns nicht gleich klappt!!! |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Können Kühe auch 'nen Herzinfarkt bekommen? :mrgreen:
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
|
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Gruß |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Glaub nur nicht, dass ich deinen ganzen Code jetzt durchschaue ;-)
Ich wollte die relevanten Codestellen und nicht mehr oder weniger ;-) |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Delphi-Quellcode:
implementation
{$R *.dfm} procedure Document_SetHTML(Document: IDispatch; const HTMLCode: string); var ms: TStringStream; begin if Assigned(Document) then begin ms := TStringStream.Create(HTMLCode); try ms.Seek(0, 0); OleCheck((Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms))); finally ms.Free; end; end; end; function Document_GetHTML(Document: IDispatch):string; var ms: TStringStream; begin Result := ''; if Assigned(Document) then begin ms := TStringStream.Create(Result); try OleCheck((Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms),False)); Result := ms.DataString; finally ms.Free; end; end; end; procedure WB_SetHTML(WebBrowser: TWebBrowser; const HTMLCode: string); begin if not Assigned(WebBrowser.Document) then WebBrowser.Navigate('about:blank'); WaitForBrowser(WebBrowser); Document_SetHTML(WebBrowser.Document, HTMLCode); end; function WB_GetHTML(WebBrowser: TWebBrowser): string; begin Result := Document_GetHTML(WebBrowser.Document); end; procedure TfrmMain.Button1Click(Sender: TObject); var Dateiinhalt: TStringList; begin Dateiinhalt := TStringList.Create; try Dateiinhalt.LoadFromFile(ListBox1.Items[0]); WB_SetHTML(WebBrowser1, Dateiinhalt.text); finally FreeAndNil(Dateiinhalt); end; end; |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Ich meine, die Dateien in Ordner wie Bilder oder Videos, ... sollen nur über mein Programm lesbar sein. d.h. wenn jemand z.B. den Ordner öffnet und versucht die Dateien einzeln zu sehen, dann soll das nicht passieren. So war meine Idee am Anfang. Hier ist mein altes Thema darüber : ![]() -------- |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Für mich klingt das so ähnlich wie "Ich habe es geschafft, bei einem Golf den Motor anzulassen. Wie fahre ich nun einen 40-Tonner unfallfrei rückwärts durch die Fußgängerzone?"
Lerne erstmal die Grundlagen, bevor Du Dir für so einen Mist den Kopf zerbrichst, wie oft muss man Dir das eigentlich noch sagen? |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Zitat:
Im obigen Code machst du irgendwas mit Xres.blabla. Ich nehme mal an, das es eine Komponente für Ressourcen ist. bei btnExtractFile hast du doch schon die nötige Routine um auch die Bilder zu extrahieren. |
Re: LoadHTMLToWebBrowser(Webbrowser1,'01.htm');
Threads wie dieser sind echt cool !
Zitat:
Die Resourcen die hier sinnlos vergeudet werden, hätte ich gern zur Verfügung ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz