Benutzer mit den meisten Antworten
Strategien um CHtmlView "absturzsicher" zu machen

Frage
-
Hi,
ich habe eine Anwendung, die in einem CHtmlView Html-Seiten quasi als gedockte Info-Anzeige anzeigt.
Nun stürzt meine Anwendung leider ab bei Anzeige der Html-Seite.Der Anbieter der Html-Seite lädt über einen Ad-Server Werbung nach. Zumindest sehe ich noch "Auf http://adclient.... warten" in meiner StatusBar. Der Callstack vom Absturz beginnt mit mehrfachen Flash.ocx!<Adresse> und irgendwann ein mshtml.dll!CDispNode::AddPreNodeTransform()
Scheinbar setzt also die aktuell eingeblendete Werbung noch Flash ein welches alles in den Orkus befördert.
Nun ist das was in der Html-Seite angezeigt wird nur eine unwichtige Zusatzinfo für unsere Anwender. Ich würde also gerne das CHtmlView irgendwie so auslagern dass die Html-Anzeige gerne abstürzen darf...
Aber welche Strategien sind realisierbar?
Tschüß, Holger.
Antworten
-
Ich habe jetzt folgende Lösung angefangen:
Mein Hauptprogramm startet einen Hilfs-Prozess. Mit etwas Voodoo (sprich IPC) lässt der Hauptprozess den Hilfsprozess meine CHtmlView als Stellvertreter erzeugen.
Der Trick dabei: Das Parent-Window-Handle ist dabei dasjenige aus dem Hauptprogramm!Für den Endanwender sieht es so aus, als ob alles weiterhin ein Programm ist. Das ein Child-Window aus einem anderen Prozess eingebunden ist ja transparent.
Wenn jetzt der Hilfsprozess abraucht, verschwindet zwar automatisch auch mein Info-html-Fenster, dafür lebt mein Hauptprogramm immerhin weiter.Tschüß, Holger.
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 20. Januar 2016 10:12
Alle Antworten
-
Gar keine. Wir haben das gleiche Problem teilweise mit Xing Seiten. Auch hier die Ursache: Werbung. Das verrückte ist, dass dies auf manchen Rechner passiert auf anderen nicht.
Bei manchen Rechnern greift sogar der Security Code im IE, der einen provozierten Buffer-Overrun vermutet und killt die Anwendung brutal. Da greift nicht mal ein selbst definierter Crash Handler...
Das Problem ist, dass man den Crash eben nicht ignorieren kann, wenn es eben der IE nicht behandelt, oder auch selbst behandelt. Letzten Endes wird das Control unbenutzbar, egal was man macht.
Hier muss entweder Adobe, oder MS nachbessern.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
-
Hallo Martin und Hallo Holgr.
Beim WebBrowser-Control der .NET-Klassen ist es möglich, alle Downloads, die die Seite ausführen will, abzufangen und vorher zu prüfen. Vielleicht, dass kann ich nicht genau sagen, ist das auch eurer Klasse machbar.
Wenn ja, könntet ihr doch einfach selber "Werbeblocker" spielen und alle Seitenfremden und Scripte, oder einfach alle Flash-Anfragen abbrechen.
© 2015 Thomas Roskop
Germany // Deutschland -
Ja. So was wäre auch mit dem HTML-Control möglich.
Die Fraqe ist dann nur wieder: Was gehört zur Seite was nicht.Aber technisch ist das sicher eine Möglichkeit. Man müsste eine Art Blacklist einbauen, die bestimmte Seiten/URLs/Elemente ignoriert
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
-
Wenn es immer die selbe Seite ist bzw. nur an den Flasch-Scripten liegt, dann kannst du doch einfach alle Flash-Daten blocken. Also einfach alle HTTP-Aufrufe von .swf-Dateien blockieren.
Ansonsten, fertige Blacklisten gibt es genügend. Nimm einfach eine von einem Werbeblocker.https://easylist-downloads.adblockplus.org/easylist.txt
© 2015 Thomas Roskop
Germany // Deutschland -
Ich habe jetzt folgende Lösung angefangen:
Mein Hauptprogramm startet einen Hilfs-Prozess. Mit etwas Voodoo (sprich IPC) lässt der Hauptprozess den Hilfsprozess meine CHtmlView als Stellvertreter erzeugen.
Der Trick dabei: Das Parent-Window-Handle ist dabei dasjenige aus dem Hauptprogramm!Für den Endanwender sieht es so aus, als ob alles weiterhin ein Programm ist. Das ein Child-Window aus einem anderen Prozess eingebunden ist ja transparent.
Wenn jetzt der Hilfsprozess abraucht, verschwindet zwar automatisch auch mein Info-html-Fenster, dafür lebt mein Hauptprogramm immerhin weiter.Tschüß, Holger.
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 20. Januar 2016 10:12