![]() |
Webseite aus Resourcen.dll im IE anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,
hier im Forum kam die Frage auf, wie man eine kleine Webseite mit Bildern etc. in kompakter Form mit seiner Anwendung weitergeben kann. Es sollte möglichst nur eine Datei sein, sodass der Anwender nicht direkt an die Seiten und Dateien heran kann. Ich gab dann die Vorlage, und unser hochgeschätzer Moderator Christian Seehase wußte, wie wir das dann umsetzen müssen. Dies hier kam dabei am Ende raus: Worum geht es? Es geht also darum, eine komplette Webseite mit Bildern, Stylesheets und html-Seiten in einer DLL als Ressourcen unterzubringen. Im IE lassen sich Dateien aus Ressourcen direkt, ohne weitere Hilfsmittel anzeigen! (Die Fehlermeldung "Seite nicht gefunden..." ist z.B. auf die gleiche Weise im Explorer untergebracht: res://C:\WINNT\system32\shdoclc.dll/dnserror.htm ) Tja, dann wollen wir mal anfangen: Die Webseite Die Webseite die wir in der Dll unterbringen wollen, die hat folgende Struktur:
Code:
Ist klar, das die Pfade dann in der html-Datei relativ sein müssen. Im Beispielprojekt seht ihr, was ich damit meine.
|
+- images ----+- background.jpg | | +- index.htm +- logo.gif | | + style.css +- dprules.gif Die Resourcen So, als erstes erstellen wir ein Script für den Resource Compiler. resdemo.rc
Code:
Bei der Erstellung des Projektes musste ich leider feststellen, das sich dieses Script mit dem Resource Compiler von Borland (Delphi 6) nicht komplilieren lässt... Er scheint mit dem ResType HTML (oder 23) nicht klarzukommen. Aber dafür funktioniert das ganz wunderbar mit dem Resource Builder ( Shareware, 30 Tage Testversion,
index.htm HTML index.htm
style.css HTML style.css background.jpg IMAGES images\background.jpg dprules.gif IMAGES images\dprules.gif logo.gif IMAGES images\logo.gif ![]() Jetzt wollen wir noch eben den Aufbau des Scriptes erläutern. Jede Zeile für sich betrachtet hat das Format "ResName ResType Dateiname". In unserem Fall muss der ResName immer gleich dem Dateinamen der einzubindenden Datei sei, inklusive der Endung. Der ResType ist für alle Dateien im Wurzelverzeichnis der Seite immer HTML (oder numerisch 23). Für die Dateien in den Unterverzeichnissen ist der ResType dann der Name des Unterverzeichnisses. (Im Beispiel eben "images".) Es lassen sich auch mehrere Verzeichnisse einbinden, aber ich vermute mal, nur eine Verzeichnis-Ebene tief. Mit Leerzeichen und Umlauten wäre ich äußerst sparsam... bzw. die funktionieren dabei dann eh nicht. Die DLL Als nächstes erstellen wir ein neues Dll-Projekt... Am besten mit Notepad, das geht in diesem Fall noch am schnellsten. :mrgreen: resdemo.dpr
Delphi-Quellcode:
Eben fix kompilieren mit "dcc32 resdemo" und fertig. (Okay, wer will, der darf auch die IDE benutzen. :zwinker: )
library resdemo;
{$R website\resdemo.RES} begin end. Feierabend! Und schon ist der Kuchen gegessen, sag ich mal. Unsere DLL ist damit schon fertig! Betrachten lässt sich das ganze nun im IE unter folgender Adresse:
Code:
res://{ kompletter Pfad zu DLL }\resdemo.dll/index.htm
Viel Spaß damit, Gruß Wormid P.S.: Die DLL hinterher mit UPX oder ähnlichem zu packen ist übrigens eine ganz schlechte Idee! Ich wollte es nur mal gesagt haben. :thuimb: Edit: Zipfile vergessen... :oops: |
Re: Webseite aus Resourcen.dll im IE anzeigen
Moin Wormid,
klasse. Prima umgesetzt :thuimb: ähhhh.... Ein paar Anmerkungen hätte ich da aber doch noch: Es funktioniert nur wenn zur Anzeige der IE verwendet wird, oder bei einem anderen Browser, der den Adresstyp res: unterstützt. (kam für meinen Geschmack nicht so ganz raus ;-)) Wenn der Pfad zur DLL angegeben wird z.B.
Delphi-Quellcode:
müssen im Pfad zur DLL Backslash ('\') verwendet werden.
Webbrowser1.Navigate('res://C:\Programme\Eigene\MeineHTMLRes.DLL/index.htm');
Eigentlich unlogisch, da ja Adressen im Browser normaler Weise mit Slash ('/') angegeben werden, und der Slash im Dateisystem ansonsten auch als Pfadtrenner zugelassen ist. Der Borland Resourcen Compiler scheitert (auch unter D5) übrigens am Punkt im Resourcennamen, der ja nun leider zwingend erforderlich ist. :? Jetzt bliebe nur noch zu testen, was mit "exotischen" Zeichen (z.B. '=','\') im Resourcennamen ist. Speziell wäre ja interessant, ob durch Verwendung des Backslash dann weitere Verzeichnisebenen möglich sind. Ggf. wäre hier dann auch noch der Resourcentyp zu testen. Was an dieser Verpackung von Webseiten noch interessant ist: Die angezeigten Dateien tauchen nicht unter "Temporary Internet Files" auf. ;-) |
Re: Webseite aus Resourcen.dll im IE anzeigen
Thx für die Blumen! :mrgreen:
Soweit ich das jetzt gestest habe, so funktionieren Verzeichnisse in mehreren Ebenen nicht! Und mit Sonderzeichen wie _ oder = scheint es auch Probleme zu geben. Schade eigentlich. :( Gruß Wormid |
Re: Webseite aus Resourcen.dll im IE anzeigen
Zitat:
![]() Der Lcc Resource Compiler (lrc 1.2) schneidet alles vor (inklusive) dem Punkt ab. Gruß Nico |
Re: Webseite aus Resourcen.dll im IE anzeigen
Ich komm mit dem Link von Dir leider nicht ganz klar, was muss ich machen um den Microsoft Resource Compiler zu nutzen? Und kann man mit ihm res Dateinen erstellen, aus Dateien die z.B. so heißen:
Code:
produktindex.php_katid=45&short=0.htm
|
Re: Webseite aus Resourcen.dll im IE anzeigen
Um den Microsoft Resource Compiler zu benutzen, musst die Dir das Komplette Microsoft SDK runterladen. Im Unterverzeichnis "bin" im Programmverzeichnis des SDK's findest Du dann die RC.exe.
Aber um Dir den download zu ersparen (obwohl es nie falsch ist, das SDK auf der Platte zu haben), habe ich das mal eben mit dem Dateinamen, den Du oben angeben hast getestet: Zitat:
Ich befürchte, wenn Du Deine statischen PHP-Seiten in die DLL einbinden willst, dann wird Du Dir erst was wegen der Dateinamen (und der Verlinkung) einfallen lassen müssen. :wall: Gruß Wormid |
Re: Webseite aus Resourcen.dll im IE anzeigen
Danke Dir auf jeden Fall, dass Du es mal ausprobiert hast ...
aber *heul* seid 2 Tagen versuch ich nun meine Seite in eine DLL zu bringen und immer kommt eine neue Hirde? Och menno :kotz: ... das gehärt zwar nicht wirklich in den Treat(kann es ja dann wieder rausnehmen), aber kennst Du eine möglichkeit die PHP seite in HTML seiten zu speichern, ohne die Sonderzeichen?! Evi |
Re: Webseite aus Resourcen.dll im IE anzeigen
Ich denke, es bleibt Dir nur der Weg, die Dateien in gültige Namen umzubenennen. Das Problem ist dabei natürlich, das auch alle Referenzen (a href, img src usw) in den Dateien geändert werden müssten.
Vielleicht gibt es ja fertige Tools, mit denen das geht - ich kenne so jetzt aber keins. :? Gruß Wormid |
Re: Webseite aus Resourcen.dll im IE anzeigen
Mh... ich hab doch einen Fortschritt gemacht,
ich hab die neuste Version von SDK runtergeladen und es ausprobiert... es funktioniert. Er pakt alles in eine res Datei(auch alle Dateien mit Sonderzeichen) ohne Fehlermeldung, und es lässt sich auch prima eine DLL Datei compilieren...das einzige Problem ist nur, dass keine Bilder angezeigt werden. Woran könnte es liegen? |
Re: Webseite aus Resourcen.dll im IE anzeigen
Mion Evian,
wenn ich mal kurz bremsen darf: Das gehört jetzt nicht mehr unbedingt hier mit rein, sondern zu Deinem ursprünglichen Thread, der zu diesem geführt hat. Es wäre ganz gut, das warum usw. dort weiter zu behandeln. (mit Verweis auf diesen Thread). Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 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