在InternetExplorer10中从Javascript调用C#BHO方法(发布预览)

在InternetExplorer10中从Javascript调用C#BHO方法(发布预览),c#,bho,internet-explorer-10,C#,Bho,Internet Explorer 10,我正试图为IE10的发布预览开发一个BHO。BHO需要能够允许javascript调用C#函数 我已按照此处提供的说明进行操作: 这些说明在IE 9中非常有效 不幸的是,我发现它们只适用于IE 10中创建的第一个选项卡。第二个和后续选项卡不向Javascript公开BHO接口。有时,新标签会起作用,但大多数时候不会。此外,它默默地失败了。我猜这与流程模型有关——但同样,它在IE9中工作良好(具有相同的流程模型) 下面是我正在使用的特定代码片段: private void InstallJSOb

我正试图为IE10的发布预览开发一个BHO。BHO需要能够允许javascript调用C#函数

我已按照此处提供的说明进行操作:

这些说明在IE 9中非常有效

不幸的是,我发现它们只适用于IE 10中创建的第一个选项卡。第二个和后续选项卡不向Javascript公开BHO接口。有时,新标签会起作用,但大多数时候不会。此外,它默默地失败了。我猜这与流程模型有关——但同样,它在IE9中工作良好(具有相同的流程模型)

下面是我正在使用的特定代码片段:

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);
}
在发布之前,我研究了以下内容:

var myATL=newactivexobject(“MySampleATL.MyClass”);
如果(myATL.Isbhoin)
警报(myATL.SayHelloFromBHO());
其他的
警报(“BHO现在未安装!”);
window.external.AddFavorite(,“text”);
摘自


该博客的历史可以追溯到2007年4月,但是,可能这正是您所寻找的。

您可能希望将其发布在博客上,因为它看起来更像是发布候选版本(仍然是预发布软件)的bug,而不是发布时支持的bug。这很可能是“太本地化了”。我发现发布的IE10版本也存在同样的问题。这个问题仍然存在。那么您如何调用InstallObject?如果您正在阅读本文:有多少次调用SetSite?每个浏览器应该调用一次。另外,请记住,每个选项卡都是一个不同的进程,因此如果您只是使用调试器进行验证,那么您必须附加到每个进程。
var myATL = new ActiveXObject("MySampleATL.MyClass");

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

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

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