Custom PreviewPane - работает в Windows7, а не в Vista - PullRequest
0 голосов
/ 11 мая 2010

Я написал расширение проводника для отображения моего пользовательского формата файлов на панели предварительного просмотра. Это хорошо работает в Windows 7, но, похоже, не работает в Vista. Одна и та же DLL обрабатывает как миниатюры, так и панель предварительного просмотра. Часть миниатюр работает как в Vista, так и в Windows7.

Добавляя журналы в мой код, Vistas вызывает только мою функцию DllGetClassObject для класса миниатюр, а не класса обработчика предварительного просмотра.

Есть ли что-то очевидное, что Vista вызывает другие проблемы с Windows7 при вызове COM DLL?

Вот значения, которые я добавляю в реестр:

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"},

Учитывая, что мой DllGetClassObject не вызывается, я предполагаю, что проблема должна быть связана с тем, что я устанавливаю в реестре? Я знаю, что экспорт DLL в порядке, так как он работает для миниатюр в Vista и Win7, и работает для панели предварительного просмотра в Windows7.

DLL - это x64, как и моя операционная система Vista и Win7. DLL написана на C ++ без ATL.

Спасибо за любую помощь в этом, Dan.

1 Ответ

1 голос
/ 11 мая 2010

Рег выглядит нормально, пропускается только стандартный прогид. В Win7 задокументировано альтернативное поведение для расположения ключа PreviewHandlers. К сожалению, документы SDK не говорят, что требуется Vista. В журнале Vista в журнальной статье вместо HKCU используется HKLM. Могу поспорить, что это все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...