Laden...

MSHTML Anzeigen

Erstellt von altertoby vor 16 Jahren Letzter Beitrag vor 16 Jahren 961 Views
A
altertoby Themenstarter:in
61 Beiträge seit 2005
vor 16 Jahren
MSHTML Anzeigen

Hallo,

also ich will mir gerade ein kleines Tool schreiben, dass mir eine Webseite in verschiedenen Browsern anzeigt (als Anfang erstmal nur IEs... und ich weiß sowas gibts schon aber ich will das hauptsächlich machen um zu lernen/tüfteln).

Deshalb geht es soweit ich weiß nicht, dass ich das WebBrowserControl aus .Net 2.0 nehme. Genauso wenig klappt es scheinbar mit verschiedenen Versionen von AxSHDocVw.dll - Controlen zu arbeiten (anscheinend wird immer die aktuell installierte Version von mshtml aufgerufen)

Also als Ideen habe ich:

  1. die aktuelle mshtml zu unregistrieren, dann die mshtml für meinen "TestIE" zu registrieren und wenn das Programm geschlossen wird wieder die alte mshtml zu registrieren... gefällt mir aber nicht wirklich (denn was ist wenn jemand dann seinen IE aufmacht während das Programm läuft?)

  2. mshtml irgendwie selber hosten... ich finde dazu jedoch nur vereinzelte c++ files (zb http://www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html), die ich aber nicht wirklich verstehe (bzw mir zutrauen würde das in c# nachzubasteln).
    Was bisher klappt ist, dass die Webseite aufgerufen wird und dann als mshtml-Document vorliegt.
    Ich weiß aber nicht wie ich die dem User anzeigen soll... hab irgendwas von drawtoDC gelesen...dass das "nur" nen Bild erzeugt ist zwar net so schön, aber auch dass hab ich nicht zum Laufen gebracht!

Also kann mir jemand helfen wie ich ein vorhandenes mshtml-Document rendern kann?!
Thx

A
altertoby Themenstarter:in
61 Beiträge seit 2005
vor 16 Jahren

So ich habs jetzt mit Hilfe einiger HTML-Controls geschafft.
zumindest wird die Webseite jetzt angezeigt, jedoch mit der aktuellen Mshtml-Engine

ich registriere die Interface zb immer so:


[ComVisible(true), Guid("332C4425-26CB-11D0-B483-00C04FD90119"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
public interface IHTMLDocument2

Wenn ich das richtig verstanden hab verweißt die GUID auf die Registry, in der wiederrum steht wo die DLL/Exe für das Interface ist. Dann ist ja klar, dass die aktuelle mshtml-Datei benutzt wird.
Das Problem ist, dass auch zb in der Version vom IE 6 die gleiche IID verwendet wird.

Gibt es da eine Möglichkeit zb in der COM die IIDs umzuändern, oder dass ich die Interfaces nicht brauche, sondern die MSHTML-Dateien irgendwie einbinde?