2008-12-10 7 views
0

Je travaille sur une extension (BHO) pour Internet Explorer, et j'ai du mal à attacher un délégué .NET aux objets mshtml pour attraper des événements DOM.Comment joindre un délégué .NET à un événement mshtml?

J'ai essayé d'utiliser les événements publiés par IHTMLElementEvents2_Event, ... interfaces, et cela fonctionne, mais seulement si je spécifie le type correct pour l'élément DOM dont les événements que je veux attraper. J'ai également besoin de spécifier dans le code le type de l'élément, et cette technique ne permet pas d'attraper des événements DOM personnalisés.

J'ai également essayé d'utiliser le HtmlEventProxy class, qui attache des objets IDispatch aux éléments DOM via la méthode IHTMLElement2.attachEvent, mais cela ne fonctionne pas du tout pour moi. Lorsque j'essaie d'accéder à l'objet d'événement comme décrit dans this thread, je reçois un blocage lors de l'accès à la propriété de document de l'élément DOM.

Alors, comment puis-je attacher des gestionnaires d'événements à des éléments DOM sans avoir besoin d'un cas particulier pour chaque type d'élément et chaque type d'événement?

Merci.

Répondre

2

Vous pouvez essayer ce code:

[ComVisible(true)] 
public class Foo 
{ 
    public Foo(HtmlDocument doc) 
    { 
    IHTMLDocument2 doc2 = (IHTMLDocument2)doc.DomDocument; 
    doc2.onkeydown = this; 
    } 

    [System.Runtime.InteropServices.DispId(0)] 
    public void EventHandler() 
    { 
    IHTMLWindow2 win2 = (IHTMLWindow2)_doc.Window.DomWindow; 
    IHTMLEventObj e = [email protected]; 

    if (e.keyCode == (int)Keys.F5) 
    { 
     // ... 
    } 
    } 
} 
Questions connexes