Sie möchten IExtractImage oder IExtractImage2 implementieren und es als eine Windows Shell Erweiterung registrieren!Implementieren Sie einfach IExtractImage2, diese wird benötigt, um den Datumsstempel für Ihre Miniaturbilder Thumbnails bereitzustellen. IExtractImage2 wird vom Betriebssystem nur verwendet, wenn bestätigt wurde, dass Ihre Anwendung diese Schnittstelle kennt.
Soweit so gut! Nun zu IExtractImage! IExtractImage2 implementiert alle IExtractImage Methoden sowie immer das Basis Interface IUnknown . Die IExtractImage-Schnittstelle fordert ein Bild von einem Objekt, zum Beispiel einem Objekt in einem Shell-Ordner, an. Sie können auch alleine IExtractImage implementieren, wenn Ihre Namespaceerweiterung Thumbnails bereitstellen muss, die in einer Shellview angezeigt werden soll und den Datumsstempel aus der Schittstelle IExtractImage2 keine große Rolle spielt. TIPP:
Verwenden Sie Trotzdem IExtractImage an der Stelle von IExtractImage2, ist besser! Optional die IThumbnailCache-Schnittstelle ab Vista bis Windows 10 hierbei werden auch mehrere bildformate unterstützt! Hier noch die beiden Schnittstellen #ifndef __IExtractImage_FWD_DEFINED__
#define __IExtractImage_FWD_DEFINED__ //BB2E617C-0920-11d1-9A0B-00C04FC2D6C1 DEFINE_GUID(IID_IExtractImage, 0xBB2E617C, 0x0920, 0x11d1, 0x9A, 0x0B, 0x00, 0xC0, 0x4F, 0xC2, 0xD6, 0xC1); // frage den Extraktor, ob er ASYNC-Extrakt unterstützt (free threaded) #define IEIFLAG_ASYNC 0x0001 // kam vom Extraktor zurück, wenn das Thumbnail NICHT zwischengespeichert wird #define IEIFLAG_CACHE 0x0002 // wurde an den Extraktor übergeben, um zu versuchen, das Seitenverhältnis des gelieferten rect darzustellen #define IEIFLAG_ASPECT 0x0004 // wenn der Extraktor nicht ins Netz gehen soll, um irgendeinen Inhalt für das Rendering zu erhalten #define IEIFLAG_OFFLINE 0x0008 // Hat das Bild einen Glanz? Dies wird zurückgegeben, wenn dies der Fall ist #define IEIFLAG_GLEAM 0x0010 // Rendern als ob für den Bildschirm (dies ist exklusiv bei IEIFLAG_ASPECT) #define IEIFLAG_SCREEN 0x0020 // rendern an die ungefähre Größe übergeben, aber ggf. zuschneiden #define IEIFLAG_ORIGSIZE 0x0040 // kam vom Extraktor zurück, wenn auf dem Thumbnail kein Symbolstempel stehen soll #define IEIFLAG_NOSTAMP 0x0080 // kam vom Extraktor zurück, wenn es keinen Rand um das Thumbnail herum geben soll #define IEIFLAG_NOBORDER 0x0100 // An die Extract-Methode übergeben, um anzuzeigen, dass ein langsameres Bild mit höherer Qualität gewünscht wird, berechnen Sie das Thumbnail neu #define IEIFLAG_QUALITY 0x0200 // kam vom Extraktor zurück, wenn Thumbnail aktualisieren verfügbar sein soll #define IEIFLAG_REFRESH 0x0400 //#if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("BB2E617C-0920-11d1-9A0B-00C04FC2D6C1") IExtractImage : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetLocation( /* [size_is][out] */ LPWSTR pszPathBuffer, /* [in] */ DWORD cch, /* [unique][out][in] */ DWORD *pdwPriority, /* [in] */ const SIZE *prgSize, /* [in] */ DWORD dwRecClrDepth, /* [in] */ DWORD *pdwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Extract( /* [out] */ HBITMAP *phBmpThumbnail) = 0; }; DEFINE_GUID(IID_IExtractImage2, 0x953BB1EE, 0x93B4, 0x11d1, 0x98, 0xA3, 0x00, 0xC0, 0x4F, 0xB6, 0x87, 0xDA); MIDL_INTERFACE("953BB1EE-93B4-11d1-98A3-00C04FB687DA") IExtractImage2 : public IExtractImage { public: virtual HRESULT STDMETHODCALLTYPE GetDateStamp( /* [out] */ FILETIME *pDateStamp) = 0; }; #endif FAQ 11: Aktualisiert am: 16 November 2018 23:31 |