2010-09-23 19 views
0

J'ai une application qui utilise un IE intégré via le contrôle Windows Forms WebBrowser. Je veux intégrer certains contrôles .NET dans la page HTML.Existe-t-il un moyen d'insérer par programmation un contrôle Windows Forms dans une instance MSHTML (WebBrowser)?

Il est ancien support (depuis la version 1.0 .NET) d'utiliser un classid spécial dans une balise objet < > (dllname # controlname), mais par l'expérimentation que j'ai trouvé qu'il ne fonctionne que si le dll est servi sur http donc il est pas possible pour moi d'utiliser.

Existe-t-il un autre moyen d'ajouter un contrôle .NET (probablement une sous-classe UserControl) à une page html existante chargée dans l'instance IE intégrée?

Puis-je écrire un contrôle ActiveX approprié dans .NET et utiliser un registre sans COM pour que IE l'instancie? J'ai l'impression de me souvenir d'un article sur MS qui fournit un support pour permettre la migration VB, étape par étape, mais je ne trouve rien. D'autres questions autour de MSHTML semblent impliquer qu'il est presque impossible de changer son comportement intégré donc j'ai très peu d'espoir ce qui signifie que je serais très heureux si quelqu'un a une solution.

/P

+0

Non, il n'y a pas de porte dérobée ici. Mshtml ne devient pas plus intelligent juste parce que vous l'utilisez dans un projet géré. C'est "" ou rien. –

Répondre

0

Je l'ai testé à l'aide des formulaires Microsoft Interop 2.1 Coffre à outils qui a permis de créer un UserControl qui pourrait être intégré comme un OCX (visible de contrôle ActiveX). L'écriture du registre s'est révélée nécessaire car les composants COM gérés ne peuvent pas définir les indicateurs OCX nécessaires à l'incorporation à l'aide de COM sans registre (ces indicateurs ne sont disponibles que pour les COM natifs). Après avoir ajouté par programme un marqueur "object" à mshtml dans l'hôte C# mshtml, j'ai pu accéder à l'occurrence HtmlObject et à sa propriété @object pour accéder à la sous-classe UserControl gérée et ajouter des contrôles enfants supplémentaires. Oh, et je me suis assuré d'enregistrer le contrôle à la fois dans les parties 32 bits et 64 bits.

La seule chose qui dérange encore moi est la dépendance du registre ...