我正在尝试从FireBreath-Plugin中启动notepad.exe,但是当我调用相应的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
答案 0 :(得分:2)
FireBreath本身没有任何帮助或阻止CreateProcess运行;它真的崩溃还是只是抛出一个javascript异常?如果插件实际崩溃,那么你的通话就会崩溃,否则很可能是未被捕获的异常。
这里没有任何特定的FireBreath,您需要了解;只需附加一个调试器,设置一个断点,然后逐步查看发生了什么。