0

我正在尝试从 FireBreath-Plugin 中启动 notepad.exe,但是当我调用适当的 API 功能(这次“回声”仅用于测试)时,它会因“NPObject 上的错误调用方法!”而崩溃。在火狐中。

这是我的代码:

FB::variant redtestAPI::echo(const FB::variant& msg) 
{
  STARTUPINFO si;
  PROCESS_INFORMATION pi;

  ZeroMemory( &si, sizeof(si) );
  si.cb = sizeof(si);
  ZeroMemory( &pi, sizeof(pi) );

  // Start the child process. 
  if( !CreateProcess( NULL,   // No module name (use command line)
    L"notepad.exe",        // Filename
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    FALSE,          // Set handle inheritance to FALSE
    0,              // No creation flags
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory 
    &si,            // Pointer to STARTUPINFO structure
    &pi )           // Pointer to PROCESS_INFORMATION structure
  ) {
    return "error";
  }

  return "foo";
}

我究竟做错了什么?我找到了一些有关此错误消息 (--> System.security.allowDomain) 的 Flash 安全解决方案,但对于 FireBreath 则没有。我究竟做错了什么?

提前致谢

海诺布

4

1 回答 1

2

FireBreath 本身不会帮助或阻止 CreateProcess 运行;它真的会崩溃还是只是抛出一个javascript异常?如果插件真的崩溃了,那么你的调用就崩溃了,否则它很可能是一个未捕获的异常。

这里没有任何关于 FireBreath 的具体内容需要您了解;只需附加一个调试器,设置一个断点,然后逐步查看发生了什么。

于 2012-03-28T21:34:06.400 回答