Pregunta

Yo escribo un BHO para IE usando C #. El código que estoy preocupado con esto es:

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

Cuando IE se ejecuta con el modo protegido fuera, todo funciona bien. Sin embargo, si el modo protegido está activada, NavigateCompleted2 () se llama, pero SetSite () y el constructor no se llama (!?!). Sin embargo, si se crea un elemento de menú que llama a un método en la clase BHO, o abrir una nueva pestaña, todo lo que se llama correctamente. ¿Alguien sabe por qué no funciona cuando abrir una nueva ventana de IE?

La fuente completo lista se puede encontrar aquí .

¿Fue útil?

Solución

Alguien en MSDN respondió a mi pregunta: el constructor y el método seguían siendo llamados, pero por alguna razón los cuadros de mensaje no muestran al abrir una nueva ventana en el modo protegido hasta que se carga la página. Variables no estaban siendo conjunto debido a un problema diferente -. El constructor fue instancias de un objeto que fue fallando silenciosamente

Ahora necesito ayuda con un diferente ( muy relacionados) problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top