Question

J'ai écrit une extension de l'explorateur pour afficher mon format de fichier personnalisé dans le volet de prévisualisation. Cela fonctionne très bien dans Windows 7, mais ne semble pas fonctionner dans Vista. La même DLL gère les vignettes et le volet de prévisualisation. Du côté des vignettes des choses fonctionnent à la fois Vista et Windows7.

Ajout de journaux à mon code, ne Vistas appeler ma fonction DllGetClassObject pour la classe des vignettes, pas la classe de gestionnaire d'aperçu.

Y at-il évident que Vista ne différemment pour Windows7 lors de l'appel COM DLLs?

Voici les valeurs que je ajoute au Registre:

HKEY_CLASSES_ROOT\\.<myext>\\(default) = "<myext>.Thumbnail.Handler.1"
HKEY_CLASSES_ROOT\\<myext>.Thumbnail.Handler.1\\ShellEx\\{8895b1c6-b41f-4c1c-a562-0d564250836f}\\(default) = "<myguid>"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\(default) = "<myext> Preview Handler"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\DisplayName = "@ExplorerPreviewHandler.dll,-101"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\Icon = "@ExplorerPreviewHandler.dll,201"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\AppID = "{6d2b5079-2f0b-48dd-ab7f-97cec514d30b}"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\(default) = "<path to my dll>"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\ThreadingModel = "Apartment"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\ProgID = "<myext>.Thumbnail.Handler.1"
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\PreviewHandlers\\<myguid> = "<myext> Preview Handler"},

Étant donné que mon DllGetClassObject n'est pas appelé, je suppose que le problème doit être quelque chose à voir avec ce que je suis mise dans le registre? Je sais que les exportations de DLL sont d'accord, comme cela fonctionne pour les vignettes dans les deux Vista et Win7, et travaille pour le volet de visualisation dans Windows7.

DLL est x64, tout comme à la fois mon Vista et Win7 systèmes d'exploitation. DLL est écrit en C ++ sans ATL.

Merci pour toute aide avec cela, Dan.

Était-ce utile?

La solution

Le reg semble peu près correct, seul le progid par défaut est manquante. Win7 n'ont documenté le comportement alternatif pour l'emplacement de la clé de PreviewHandlers. Malheureusement, les SDK docs ne disent pas ce que Vista nécessite. Un temps Vista article de magazine utilise HKLM au lieu de HKCU. Je parie que c'est tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top