Question

Je suis en train d'écrire un BHO pour IE en utilisant C #. Le code que je suis concerné par ceci:

public class BHO : IObjectWithSite, IOleCommandTarget
{
    ...
    public BHO()
    {
        MessageBox.Show("Constructor called");
    }

    public int SetSite(object site)
    {
        MessageBox.Show("SetSite called!");
        if( site != null )
        {
            _webBrowser = (WebBrowser) site;
            _webBrowser.NavigateComplete2 += OnNavigateComplete2;
        }
        else
        {
            _webBrowser.NavigateComplete2 -= OnNavigateComplete2;
            _webBrowser = null;
        }
        return 0;
    }

    private void OnNavigateComplete2(object pDisp, ref object URL)
    {
        MessageBox.Show("OnNavigateComplete2 called");
    }

Lorsque IE est exécuté avec mode protégé off, tout fonctionne bien. Toutefois, si le mode protégé est activé, NavigateCompleted2 () est appelée, mais SetSite () et le constructeur ne sont jamais appelés (!?!). Cependant, si je crée un élément de menu qui appelle une méthode dans la classe BHO, ou ouvrir un nouvel onglet, tout est appelé correctement. Est-ce que quelqu'un sait pourquoi il ne fonctionne pas quand j'ouvre une nouvelle fenêtre IE?

La liste source complète peut être trouvée ici .

Était-ce utile?

La solution

Quelqu'un sur MSDN a répondu à ma question: le constructeur et la méthode étaient encore appelé, mais pour une raison quelconque les MessageBoxes ne montrent pas quand j'ouvre une nouvelle fenêtre en mode protégé jusqu'à ce que la page est chargée. Les variables n'étaient pas définies en raison d'un problème différent -. Le constructeur a été instanciation d'un objet qui échouait en silence

J'ai besoin maintenant d'aide avec un autre ( très liée ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top