2012-08-13 8 views
7

Sto cercando di sviluppare un BHO per l'anteprima di rilascio di IE 10. Il BHO deve essere in grado di consentire a javascript di chiamare una funzione C#.Chiamare i metodi C# BHO da Javascript In Internet Explorer 10 (Anteprima di rilascio)

Ho seguito le istruzioni disponibili qui:

Calling C# BHO methods from Javascript

Queste istruzioni funzionano molto bene in IE 9.

Purtroppo, ho scoperto che funzionano solo per la prima scheda creata in IE 10. Le seconde e successive schede non espongono l'interfaccia BHO a Javascript. A volte, nuove schede funzionano, ma la maggior parte delle volte non lo fanno. Inoltre, fallisce silenziosamente. Immagino che questo abbia qualcosa a che fare con il modello di processo, ma di nuovo funziona perfettamente con IE 9 (che ha lo stesso modello di processo).

Ecco il frammento di specifica di codice che sto usando:

private void InstallJSObject(IHTMLWindow2 window) 
{ 
    // Install our javascript object 
    IExpando windowEx = (IExpando)window; 

    PropertyInfo property = windowEx.GetProperty("myBHO", System.Reflection.BindingFlags.IgnoreCase); 
    if (property == null) 
    { 
     property = windowEx.AddProperty("myBHO"); 
    } 
    property.SetValue(windowEx, this, null); 
} 

Prima di postare, ho studiato il seguente: http://bit.ly/R9qldf

+1

Si potrebbe voler inviare questo su [Microsoft Connect] (http://connect.microsoft .com) in quanto sembra più un bug per la release candidate (che è ancora un software pre-release) piuttosto che qualcosa che è stato supportato per il rilascio. Questo potrebbe benissimo essere "troppo localizzato". – casperOne

+1

Sto riscontrando lo stesso problema con la versione rilasciata di IE10. Questo problema esiste ancora. –

+0

Beh, come stai chiamando InstallObject? Se stai seguendo questo articolo: http://www.codeproject.com/Articles/19971/How-to-attach-to-Browser-Helper-Object-BHO-with-C Quante volte vieni SetSite chiamato? Dovrebbe essere chiamato una volta per browser. Inoltre, ricorda, ogni scheda è un processo diverso, quindi se stai utilizzando il debugger per la verifica, dovrai allegare a ciascun processo. –

risposta

0
var myATL = new ActiveXObject("MySampleATL.MyClass"); 

if (myATL.IsBHOInstalled) 
     alert (myATL. SayHelloFromBHO()); 

else 
     alert ("BHO isn't installed now !"); 

window.external.AddFavorite(<url>, "text"); 

estratto da here.

Il blog risale al April'07, ancora, può essere questo è quello che stavi cercando ..

Problemi correlati