Frage

Ich schreibe ein BHO für IE mit C #. Der Code, den ich besorgt bin mit, ist dies:

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");
    }

Wenn IE ausgeführt wird mit dem geschützten Modus ausgeschaltet, funktioniert alles einwandfrei. Wenn jedoch die geschützte Modus eingeschaltet ist, NavigateCompleted2 () aufgerufen wird, aber SetSite () und der Konstruktor nie genannt (!?!). Allerdings, wenn ich einen Menüpunkt erstellen, die ein Verfahren in der BHO-Klasse aufruft, oder öffnen Sie einen neuen Tab, wird alles korrekt aufgerufen. Weiß jemand, warum es nicht funktioniert, wenn ich ein neues IE-Fenster öffnen?

Die vollständige Quelle Auflistung finden Sie hier .

War es hilfreich?

Lösung

Jemand auf MSDN beantwortete meine Frage: der Konstruktor und Verfahren noch genannt wurden, aber aus irgendeinem Grunde die Message nicht zeigen, wenn ich ein neues Fenster im geschützten Modus geöffnet, bis die Seite geladen wird. Variablen wurden nicht eingestellt ist, aufgrund eines anderen Problems -. Der Konstruktor ein Objekt wurde instanziieren, die leise versagt wurde

Ich brauche jetzt Hilfe bei einer anderen ( sehr ähnliche ) Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top