【问题标题】:Handle firefox error message “Cannot load XPCOM” using C++使用 C++ 处理 Firefox 错误消息“无法加载 XPCOM”
【发布时间】:2026-01-10 19:05:01
【问题描述】:

我正在尝试使用 CreateProcess() 打开 Mozilla Firefox。但是,如果 Firefox 在我尝试打开它时自动更新,我会收到以下错误消息:

无法加载 XPCOM

我需要重新启动应用程序。

这是我正在使用的代码:

path = MozillaExePath.c_str();

STARTUPINFO info = { sizeof(STARTUPINFO), NULL, NULL, "FireFox", 0,0,800, 600, NULL, NULL, NULL,    NULL, NULL, 0, NULL, NULL, NULL, NULL };
PROCESS_INFORMATION processInfo;

if (CreateProcess(path, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
    WaitForSingleObject(processInfo.hProcess, 3000);
    CloseHandle(processInfo.hProcess);
    CloseHandle(processInfo.hThread);
}
else
{
    WriteLogFile("May be error with mozilla firefox...\n");
    exit(1);
}

那么,如何使用 C++ 处理该错误消息?

【问题讨论】:

    标签: c++ visual-studio winapi visual-c++ mozilla


    【解决方案1】:

    这是另一种对我有用的方法:

    #include <shellapi.h>
    
    [...]
    
    if (ShellExecute(NULL, TEXT("open"), TEXT("firefox.exe"), NULL, NULL, 0) <= HINSTANCE(32))
    {
        WriteLogFile("Could not open Mozilla Firefox...\n");
    }
    

    参考:

    https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutea

    【讨论】: