msc
msc

Reputation: 34708

Handle firefox error message “Cannot load XPCOM” using C++

I'm trying to open Mozilla Firefox using CreateProcess(). However, If Firefox is auto updating while I try to open it, I get the following error message:

Cannot load XPCOM

And I need to restart the application.

Here is the code I'm using:

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

So, how can I handle that error message using C++?

Upvotes: 0

Views: 147

Answers (1)

Isma
Isma

Reputation: 15209

Here is a different way to do this that is working for me:

#include <shellapi.h>

[...]

if (ShellExecute(NULL, TEXT("open"), TEXT("firefox.exe"), NULL, NULL, 0) <= HINSTANCE(32))
{
    WriteLogFile("Could not open Mozilla Firefox...\n");
}

Reference:

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

Upvotes: 1

Related Questions