2012-03-28 2 views
0

FireBreath-Plugin에서 notepad.exe를 시작하려고하는데 적절한 API 함수를 호출 할 때 (테스트 할 때만 "echo") "NPObject에서 메서드 호출 중 오류!"와 충돌합니다. FireFox에서.FireBreath : CreateProcess() -> 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는 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 사전에

감사

heinob

+0

죄송합니다. 물론 "CreateProcessAsUser"가 아닌 "CreateProcess"를 사용하고 있습니다. 이것은 잘못 입력 한 것입니다. "AsUser"를 무시하십시오 – heinob

답변

2

FireBreath 자체가 실행 CreateProcess를 도와하거나 방지하기위한 아무 조치도 취하지 않습니다; 실제로 충돌이 발생합니까 아니면 또는 자바 스크립트 예외가 발생합니까? 플러그인이 실제로 중단되면 호출이 충돌합니다. 그렇지 않으면 잡히지 않은 예외 일 수 있습니다.

여기에서 FireBreath에 관해 알아야 할 구체적인 사항은 없습니다. 디버거를 연결하고, 중단 점을 설정하고, 단계별로 어떤 일이 일어나고 있는지 확인하십시오.

+0

맞습니다! 대신'ShellExecute (NULL, NULL, L, notepad.exe ", L" ", NULL, SW_SHOW);를 사용하여 문제를 해결했습니다. – heinob