Laden...

WebBrowser-Control: Zugriff auf activeX-Control

Erstellt von mobobo vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.106 Views
M
mobobo Themenstarter:in
3 Beiträge seit 2011
vor 9 Jahren
WebBrowser-Control: Zugriff auf activeX-Control

Hallo C# Gemeinde,

ich sitze nun schon länger an einem Problem und zwar folgendes.
Ich hab eine Form mit einem WebBrowser-control. Ich lade darin eine Url die im wesentlichen nur aus einem (ich glaube) activeX-control besteht. Der gekürzte SeitenQelltext:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD></HEAD>
<object id= 'TreeControlX' classid='clsid:xxx-xxx-xxx-xxx' height=100%  width=100%>
</object>
<script>
document.TreeControlX.BuildTree("http://server/WebService.asmx");
</script>
</HTML>

sobald im Code das Script ausgeführt wird, baut sich ein .Net typisches treeView auf, das als Programmstarter fungiert, also klickt man einen Eintrag an wird eine .exe gestartet.

Nun habe ich mit


Type type = Type.GetTypeFromCLSID(new Guid("{xxx-xxx-xxx-xxx}"));
object obj = Activator.CreateInstance(type);

ein Objekt erzeugt, dessen Typ auch als "Hersteller.TreeControl" zurückgegeben wird. (mit getType()) Weiter komm ich nun nicht.
Wenn ich versuche die Methode "BuildTree()" aufzurufen gibts ne Fehlermeldung das das Objekt über keine solche Methode verfügt. Genau gesagt hat sie garkeine oder besser ich komm nicht ran, irgendetwas versteh ich nicht ganz an der sache.

Im html code wird ja das objekt einfach durch "document.TreeControlX.BuildTree()" angesprochen, wie implementiere ich das in C# ? Ich dachte ich kann dieses treeviewObjekt einfach wie ein .net control instanzieren aber das wäre wohl zu einfach.

Momentan hab ich es so gelöst das ich die Mauskoordinaten über dem Browser (besser den verschiedenen Knoten des treeView) einmal speicher und beim Document.Complete Event die Koordinaten wieder anfahre und über nen MausHook klicke, da es im WebBrowserControl ja auch keine MouseEvents gibt. Ist aber halt ne Lösung die mir unsauber erscheint und irgendwie nicht gefällt.

Ich muss dazu sagen das ist alles rein Hobby-mäßig und ich bin absolut kein Profi, aber versuche das ganze trotzdem irgendwie zu verstehen 🤔

Nunja, wenn jemand eine Ideee dazu hat würde ich mich über einen schubs in die richtige Richtung sehr freuen!

einen schönen Abend noch,
mobobo

194 Beiträge seit 2006
vor 9 Jahren

hi
Ist ja klar object besitzt ja keine solche Methode.
Imho sollte man hier besser dynamic verwenden.

Hierzu denke ich dass man eigentlich mehr über die active-x komponente wissen sollte, wie sieht es denn mit einem Verweis auf die Typelib (Stichwort:tlbimp.exe)aus?

Vielleicht kriegt man aus dieser ein Interface generiert dann ist das ja meistens (aber nicht immer) schon die halbe Miete.
Gruss