windows - Bestem den registrerede ansøgning om en udvidelse

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en filtypenavn, og jeg vil gerne få navnet på ansøgningen (hvis der er en), der vil blive påkaldt, når jeg ShellExecute en fil af den type. Dette er en WTL/C ++ app. Er der nogen prøvekode derude, der gør dette?


Tak!

Bedste reference


TWK,


Du søger sandsynligvis Win32 AssocQueryStringByKey-funktionen.

http://msdn.microsoft.com/en-us/library/bb773473(VS.85).aspx[3]


ASSOCSTR-værdien, der angiver den type streng, der skal returneres:


typedef enum {
    ASSOCSTR\_COMMAND = 1,
    ASSOCSTR\_EXECUTABLE,
    ASSOCSTR\_FRIENDLYDOCNAME,
    ASSOCSTR\_FRIENDLYAPPNAME,
    ASSOCSTR\_NOOPEN,
    ASSOCSTR\_SHELLNEWVALUE,
    ASSOCSTR\_DDECOMMAND,
    ASSOCSTR\_DDEIFEXEC,
    ASSOCSTR\_DDEAPPLICATION,
    ASSOCSTR\_DDETOPIC,
    ASSOCSTR\_INFOTIP,
    ASSOCSTR\_QUICKTIP,
    ASSOCSTR\_TILEINFO,
    ASSOCSTR\_CONTENTTYPE,
    ASSOCSTR\_DEFAULTICON,
    ASSOCSTR\_SHELLEXTENSION,
    ASSOCSTR\_DROPTARGET,
    ASSOCSTR\_DELEGATEEXECUTE,
    ASSOCSTR\_MAX
} ASSOCSTR;


Mit gæt er, at du vil have ASSOCSTR\_FRIENDLYAPPNAME.

Andre referencer 1


DWORD dwSize = 255;
TCHAR sBuffer[MAX\_PATH] = {0};
HRESULT hr = AssocQueryString(0, ASSOCSTR\_EXECUTABLE, \_T(".htm"), \_T("Open"), sBuffer, &dwSize);
CString csExt;
csExt.Format(\_T("\%s"), sBuffer);
AfxMessageBox(csExt);

Andre referencer 2


Beklager, ingen kode, men nogle nyttige oplysninger. Se dette relaterede spørgsmål: how-do-vista-generate-the-icon-for-documents-associated-to-my-applikationen


Det blev spurgt om ikoner, men det viser sig, at programmet i forbindelse med en udvidelse er gemt på samme sted i registreringsdatabasen som ikonet for den udvidelse.

Andre referencer 3


Det er en Win32 FAQ siden 1995 (Shell, se Google Grupper, Win32)