【问题标题】:Calling C# BHO methods from Javascript In Internet Explorer 10 (Release preview)在 Internet Explorer 10 中从 Javascript 调用 C# BHO 方法(发布预览)
【发布时间】:2014-07-31 18:12:22
【问题描述】:

我正在尝试为 IE 10 的发布预览开发 BHO。BHO 需要能够允许 javascript 调用 C# 函数。

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

Calling C# BHO methods from Javascript

这些说明在 IE 9 中运行良好。

不幸的是,我发现它们仅适用于在 IE 10 中创建的第一个选项卡。第二个和后续选项卡不会将 BHO 接口暴露给 Javascript。有时,新标签会起作用,但大多数时候它们不起作用。而且,它默默地失败了。我猜这与流程模型有关——但同样,它在 IE 9(具有相同的流程模型)中运行良好。

这是我正在使用的代码的特定 sn-p:

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

发帖前,我研究了以下内容:http://bit.ly/R9qldf

【问题讨论】:

  • 您可能想在Microsoft Connect 上发布此内容,因为它看起来更像是发布候选(仍是预发布软件)的错误,而不是已被支持发布的内容。这很可能是“过于本地化”。
  • 我在 IE10 的发布版本中看到了同样的问题。这个问题依然存在。
  • 那么你是如何调用InstallObject的?如果您正在关注这篇文章:codeproject.com/Articles/19971/… 您被调用了多少次 SetSite?每个浏览器都应该调用一次。另外,请记住,每个选项卡都是不同的进程,因此如果您只是使用调试器进行验证,那么您必须附加到每个进程。

标签: c# bho internet-explorer-10


【解决方案1】:
var myATL = new ActiveXObject("MySampleATL.MyClass");

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

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

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

提取自here

该博客的历史可以追溯到 2007 年 4 月,不过,这可能就是您正在寻找的内容......

【讨论】:

    猜你喜欢
    • 2012-03-06
    • 2012-07-21
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多