c ++ - ShellExecute ved hjælp af en webadresse resulterer i ikke-tilknyttet fejlmeddelelse. Hvilken filforening mangler?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger 'ShellExec' i c ++ og windows til at åbne en url i standardbrowseren.


For meget få kunder mislykkes det med følgende meddelelse: 'Denne fil har ikke et program tilknyttet det til at udføre denne handling'. Jeg forstår, at dette betyder, at 'http' -filtypeforeningen mangler eller er ugyldig i registreringsdatabasen for denne kunde.


spørgsmål:


Kan jeg registrere dette problem programmatisk og rette eller undgå det?
- Jeg tænkte på at bruge AssocQueryKey og RegQueryValueEx, men ikke sikker på, at det er muligt.


Jeg sætter pris på ethvert råd om fastsættelse af dette. Jeg har ikke et system, der viser problemet, så jeg håber at nogen her allerede har løst problemet.


Dette er koden for at åbne browseren. urlToNavigateTo ville være noget som 'http://www.website.com/function?key=9271'


    ErrorClass error;
    SHELLEXECUTEINFO execInfo;
    ZeroMemory (&execInfo, sizeof(SHELLEXECUTEINFO));
    execInfo.cbSize     = sizeof(SHELLEXECUTEINFO);
    execInfo.lpFile     = urlToNavigateTo.c\_str();
    execInfo.nShow      = SW\_SHOWNORMAL;
    execInfo.hwnd       = m\_hWnd;   // parent window for error messages 
    BOOL bOK            = ShellExecuteEx (&execInfo);
    if (bOK!=TRUE) {
        STRING errMessage = \_T("Could not navigate to url Reason:" )+ FACTORY->GetUtils()->GetPlatformErrorMessage(GetLastError());
        LOG\_ERROR(errMessage);
        error.Assign(errMessage);
    }

Bedste reference


Du fortæller ikke, hvad handling du vil udføre. I dette tilfælde er den handling, du ønsker, åben .


ShellExecute(0, "open", "http://www.website.com/function?key=9271", 0, 0, SW\_SHOWNORMAL);


Med ShellExecuteEx betyder det at du vil tilføje:


execInfo.lpVerb = "open"