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__ // Definition der IID (Interface Identifier) für die Schnittstelle IExtractImage DEFINE_GUID(IID_IExtractImage, 0xBB2E617C, 0x0920, 0x11d1, 0x9A, 0x0B, 0x00, 0xC0, 0x4F, 0xC2, 0xD6, 0xC1); // IEIFLAG_*-Konstanten, die verschiedene Flags // für das Extrahieren von Bildern definieren // Diese Flags steuern das Verhalten des Extraktors. // Unterstützt ASYNC-Extraktion (freigegebenes Gewinde) #define IEIFLAG_ASYNC 0x0001 // Thumbnail wird nicht zwischengespeichert #define IEIFLAG_CACHE 0x0002 // Versucht, das Seitenverhältnis des dargestellten Rechtecks darzustellen #define IEIFLAG_ASPECT 0x0004 // Keine Netzwerkverbindung erforderlich #define IEIFLAG_OFFLINE 0x0008 // Gibt an, ob das Bild einen Glanz hat #define IEIFLAG_GLEAM 0x0010 // Rendern als ob es für den Bildschirm ist #define IEIFLAG_SCREEN 0x0020 // Rendern an ungefähre Größe, aber ggf. zuschneiden #define IEIFLAG_ORIGSIZE 0x0040 // Kein Symbolstempel auf dem Thumbnail #define IEIFLAG_NOSTAMP 0x0080 // Kein Rand um das Thumbnail #define IEIFLAG_NOBORDER 0x0100 // Langsamere Bildqualität gewünscht, neu berechnen #define IEIFLAG_QUALITY 0x0200 // Thumbnail-Aktualisierung verfügbar #define IEIFLAG_REFRESH 0x0400 // Definition der IExtractImage-Schnittstelle MIDL_INTERFACE("BB2E617C-0920-11d1-9A0B-00C04FC2D6C1") IExtractImage : public IUnknown { public: // Methode zum Abrufen des Speicherorts // und der Attribute eines extrahierten Bilds 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; // Methode zum Extrahieren des Bilds als HBITMAP virtual HRESULT STDMETHODCALLTYPE Extract( /* [out] */ HBITMAP *phBmpThumbnail) = 0; }; // Definition der IID für die Schnittstelle IExtractImage2, // die von IExtractImage erbt DEFINE_GUID(IID_IExtractImage2, 0x953BB1EE, 0x93B4, 0x11d1, 0x98, 0xA3, 0x00, 0xC0, 0x4F, 0xB6, 0x87, 0xDA); // Definition der IExtractImage2-Schnittstelle, // die von IExtractImage erbt MIDL_INTERFACE("953BB1EE-93B4-11d1-98A3-00C04FB687DA") IExtractImage2 : public IExtractImage { public: // Methode zum Abrufen des Zeitstempels einer Datei virtual HRESULT STDMETHODCALLTYPE GetDateStamp( /* [out] */ FILETIME *pDateStamp) = 0; }; #endif Diese Kommentare erklären die Bedeutung der verschiedenen Teile des Codes: Die DEFINE_GUID-Makros definieren GUIDs für die COM-Schnittstellen. Die IEIFLAG_*-Konstanten beschreiben verschiedene Flags für das Extrahieren von Bildern. IExtractImage und IExtractImage2 sind COM-Schnittstellen, die Methoden für das Extrahieren von Bildern und das Abfragen von Dateiattributen bereitstellen. Der Code definiert somit Schnittstellen und Konstanten für das Arbeiten mit extrahierten Bildern und Dateiattributen. FAQ 11: Aktualisiert am: 1 November 2023 15:35 |