FireBreath: CreateProcess () -> Ошибка вызова метода для NPObject - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь запустить notepad.exe из плагина FireBreath-Plugin, но когда я вызываю соответствующую API-функцию (на этот раз «echo» только для тестирования), она выдает сообщение «Ошибка вызова метода в NPObject!»в FireFox.

Вот мой код:

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

Что я делаю не так?Я нашел несколько решений безопасности для Flash относительно этого сообщения об ошибке (-> System.security.allowDomain), но ни одного для FireBreath.Что я делаю не так?

Заранее спасибо

heinob

1 Ответ

2 голосов
/ 29 марта 2012

Сам FireBreath не делает ничего, чтобы помочь или предотвратить запуск CreateProcess; это на самом деле сбой или просто вызывает исключение JavaScript? Если плагин действительно аварийно завершает работу, то происходит сбой вашего вызова, в противном случае это, скорее всего, неперехваченное исключение.

Здесь нет ничего специфического для FireBreath, о котором вам нужно знать; просто подключите отладчик, установите точку останова и шагайте, чтобы увидеть, что происходит.

...