سؤال

لقد كتبت ملحق Explorer لعرض تنسيق الملف المخصص الخاص بي في جزء المعاينة. هذا يعمل بشكل جيد في Windows 7 ، ولكن لا يبدو أنه يعمل في Vista. نفس DLL يتعامل مع كل من Thumbnails وجزء المعاينة. يعمل الجانب المصغرة من الأشياء في كل من Vista و Windows7.

إضافة سجلات إلى الكود الخاص بي ، فإن Vistas فقط استدعاء وظيفة dllgetClassObject الخاصة بي لفئة Thumbnail ، وليس فئة معالج المعاينة.

هل هناك أي شيء واضح أن Vista يفعل بشكل مختلف لنظام التشغيل Windows7 عند استدعاء com dlls؟

إليك القيم التي أضيفها إلى السجل:

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 OSS. تتم كتابة DLL في C ++ بدون ATL.

شكرا لك على أي مساعدة في هذا ، دان.

هل كانت مفيدة؟

المحلول

يبدو Reg على ما يرام ، فقط الافتراضي المفقود. لدى Win7 سلوك بديل لموقع مفتاح المعاينة. لسوء الحظ ، لا تقول مستندات SDK ما يتطلبه Vista. وقت فيستا مقال بمجلة يستخدم HKLM بدلا من HKCU. أراهن أن هذا كل شيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top