【问题标题】:Error Calling method on NPObject - Firefox PluginNPObject 上的错误调用方法 - Firefox 插件
【发布时间】:2015-10-27 09:28:19
【问题描述】:

我有一段从可视 C# 应用程序中检索数据的可视 C++ 代码(firebreath)。对于否定情况(返回不带 out 参数的值),通信工作正常,但在肯定情况下(返回不带 out 参数的值)会显示以下错误。

错误: 在 NPObject 上调用方法时出错!

我猜问题出在 Visual C# 应用程序的 out 参数中。任何人都可以帮助我吗?请使用以下代码作为参考。

ngContent.js:(js调用firebreath函数)

function GetDetails(param1, param2) {
  try {
    return document.getElementById("nGCall").ReturnDetails(param1, param2);
  }
  catch (e) {
    alert("Exception Occured " + e.message);
  }
};

nGAPI.cpp:(调用 C# 应用程序的 Firebreath 函数)

FB::VariantList nGAPI::ReturnDetails(std::wstring& param1, std::wstring& param2)
{
  try {
    InetGuardNPAPI *CSharpInterface = NULL;

    //Open interface to C#
    CoInitialize(NULL);
    HRESULT hr = CoCreateInstance(CLSID_netGuardIEBHO, NULL, CLSCTX_INPROC_SERVER, IID_InetGuardNPAPI, reinterpret_cast<void**>(&CSharpInterface));

    BSTR out1= NULL;
    BSTR out2= NULL;
    BSTR out3= NULL;
    BSTR out4= NULL;

    int returns = CSharpInterface->NPGetDetails(param1.c_str(), param2.c_str(), &out1, &out2, &out3, &out4);

    if (out1 != NULL && out2 != NULL) {
      return FB::variant_list_of(out1)(out2)(out3)(out4);
    } else {
      return FB::variant_list_of();
    }
  } catch (...) {
    MessageBoxW(NULL, L"Exception occured.", L"NG", NULL);

    return FB::variant_list_of();
  }

nGHost.cs:(Visual C# 应用程序)

public int NPGetDetails(string param1, string param2, out string out1, out string out2, out string out3, out string out4)
{
  int retValue = 0;
  out1 = null;
  out2 = null;
  out3 = null;
  out4 = null;

  bool userIdentified = IdentifyUser(ngDB, out ngdata);

  if (!userIdentified)
    return retValue;

  try {
    out1 = ngdata.abc;
    out2 = ngdata.def;
    out3 = ngdata.ghi;
    out4 = ngdata.jkl;
    retValue = 1;
  } catch (Exception ex) {
    MessageBox.Show(ex.Message);
  }

  return retValue;
}

提前致谢。

【问题讨论】:

    标签: javascript c# firefox firebreath


    【解决方案1】:

    您收到的错误表明引发了异常。不幸的是,当浏览器切换到进程外插件时,它们停止暴露异常。我建议附加一个调试器并逐步查看实际发生的情况;或者,添加一些日志记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多