(Ce n'est pas la réponse, mais peut vous aider dans vos recherches.)
J'ai créé et INSCRITS ma propre extension de lien shell. Après le redémarrage d'Explorer, il utilise mon extension et demande différentes propriétés via l'interface IPropertyStore. journal complet:
TMyLinkExtension.07BA12F0 is created
TMyLinkExtension.07BA12F0.QueryInterface IID_IShellLinkW out Result=S_OK
TMyLinkExtension.07BA12F0.QueryInterface IID_IInitializeWithFile out Result=S_OK
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize started
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize in AFileName=C:\Users\Dec\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Total Commander\1.mylnk
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize in AOpenMode=STGM_READ
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize out Result=S_OK
TMyLinkExtension.07BA12F0.IInitializeWithFile.Initialize finished
TMyLinkExtension.07BA12F0.QueryInterface IID_IShellLinkW out Result=S_OK
TMyLinkExtension.07BA12F0.QueryInterface IID_IShellLinkDataList out Result=S_OK
TMyLinkExtension.07BA12F0.IShellLinkDataList.GetFlags started
TMyLinkExtension.07BA12F0.IShellLinkDataList.GetFlags out Result=E_NOTIMPL
TMyLinkExtension.07BA12F0.IShellLinkDataList.GetFlags finished
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath started
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in AFileName=0C1FF058
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in AFileNameLength=260
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in @AFindData=0C1FEE08
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath in AFlags=SLGP_RAWPATH
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath out Result=E_NOTIMPL
TMyLinkExtension.07BA12F0.IShellLinkW.GetPath finished
TMyLinkExtension.07BA12F0.QueryInterface IID_IPropertyStore out Result=S_OK
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_ID (Caption: AppUserModelId, CanonicalName: System.AppUserModel.ID, Type: VT_LPWSTR)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_PreventPinning (Caption: Prevent pinning, CanonicalName: System.AppUserModel.PreventPinning, Type: VT_BOOL)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData.vt=VT_BOOL
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData=0
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=S_OK
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey={9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 23 (Caption: System.AppUserModel.ExcludedFromLauncher, CanonicalName: System.AppUserModel.ExcludedFromLauncher, Type: VT_BOOL)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData.vt=VT_BOOL
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out AData=0
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=S_OK
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey={9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 14 (Caption: Host environment, CanonicalName: System.AppUserModel.HostEnvironment, Type: VT_UI4)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_StartPinOption (Caption: Start pin option, CanonicalName: System.AppUserModel.StartPinOption, Type: VT_UI4)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey={9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 18 (Caption: Installed by, CanonicalName: System.AppUserModel.InstalledBy, Type: VT_UI4)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_AppUserModel_IsDualMode (Caption: Is dual mode, CanonicalName: System.AppUserModel.IsDualMode, Type: VT_BOOL)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue started
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue in AKey=PKEY_Link_Arguments (Caption: Arguments, CanonicalName: System.Link.Arguments, Type: VT_LPWSTR)
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue out Result=E_INVALIDARG
TMyLinkExtension.07BA12F0.IPropertyStore.GetValue finished
TMyLinkExtension.07BA12F0 is destroyed
J'ai essayé de jouer avec des valeurs différentes mais ne peux pas trouver le moyen de montrer mon fichier 1.mylnk dans le menu de démarrage, mais peut-être ce journal vous aidera.
Implémentez-vous l'extension shell IShellLink associée à votre extension de fichier? –
Nous ne le faisons pas. La majorité des membres de IShellLink ne peuvent pas être implémentés avec nos raccourcis. Par exemple, nos raccourcis stockent une ou plusieurs valeurs Nom de l'application qui sont ensuite transmises à un lanceur. Le chemin exact du fichier programme n'est pas connu, et même s'il l'était, il pourrait y en avoir plus d'un. Cela rend impossible l'implémentation correcte de 'GetPath' /' SetPath'. Cela ne peut pas être la façon dont Explorer détermine quels raccourcis afficher, cependant, sinon il devrait charger et tester chaque fichier de raccourci unique afin d'afficher la liste pour un dossier donné. Cela fonctionnerait mal. –
Bien que ... je suppose qu'il charge et teste chaque raccourci qu'il affiche, sinon les gestionnaires d'icônes ne fonctionneraient pas. Je suppose qu'il ne peut pas être exclu qu'Explorer puisse utiliser 'IShellLink' comme sémaphore pour afficher ou non un raccourci donné ... –