Hi@all
Eigentlich kennt das ja jeder. Die Vorschau bei einem OpenFileDialog oder im Explorer. Doch wie kann man dieses im eigenen Programm nutzen? Windows stellt dafür das Interface IPreviewHandler zur Verfügung. Dieses Beispiel zeigt wie es funktioniert. Das schöne an diesem Interface ist, das es unabhängig von den installierten Programmen arbeiten kann. Bedeutet, sofern für eine bestimmte Datei ein PreviewHandler in der Registry vorhanden ist, wird dieser verwendet um eine Vorschau anzuzeigen. z.B. falls der ArcobatReader für PDF installiert ist, wird der PreviewHandler vom AcrobatReader verwendet. Falls z.B. der FoxitReader für PDF installiert ist, wird der PreviewHandler vom FoxitReader verwendet. Falls kein entsprechendes Programm für z.B. PDF installiert ist, wird der vorhandene Standard PreviewHandler verwendet. In den meisten Fällen wäre das für PDF der EdgeBrowser. Kurz gesagt, es wird das genutzt, was auf dem System vorhanden ist. Es muss daher keine Zusätzliche Software installiert werden. Einige Dateien besitzen teilweise mehrere PreviewHandler weswegen das Programm versucht diese in einer bestimmten Reihenfolge abzufragen um das bestmögliche herauszuholen. Die PreviewHandler sind alle in der Registry unter "HKEY_CLASSES_ROOT\.[FileExt]\ShellEx" zufinden. Das Interface IPreviewHandler kann daher eine vielzahl an Dateien für eine Vorschau laden und anzeigen. Als Alternative, falls kein PreviewHandler für eine Datei vorhanden ist bzw. IPreviewHandler komplett fehlschlägt, wird halt versucht zumindest das Icon oder ein Bild von der Datei anzuzeigen (ist so im Explorer nicht vorgesehen und daher Optional).
Im Internet gibt es diverse Beiträge wo immer wieder von Problemen mit diesem Interface und dem AcrobatReader berichtet wird. Ich habe das nun auf 3 verschiedenen Rechnern ausprobiert und hatte keine Probleme im Zusammenhang mit dem AcrobatReader. Falls jemand eine Lösung für das Problem im Zusammenhang mit diesem Interface kennt, immer her damit. Windows kann das ja offensichtlich ohne Probleme. What ever. Einfach mal diesen Code mit unterschiedlichen Dateien (PDF, Office Dokumente, Bilder, Audio, Video usw) ausprobieren. Je nach Dateityp kann es auch schon mal ein paar Sekunden dauern bis die Vorschau was anzeigt (oder die Rückgabe checken ob True oder False). Ansonsten: Das ist Testcode, keine extra Verweise oder Fremdpakete.
Ach ja, der Screenshot zeigt eine PDF die über den PreviewHandler vom AcrobatReader geladen und angezeigt wird.
Eigentlich kennt das ja jeder. Die Vorschau bei einem OpenFileDialog oder im Explorer. Doch wie kann man dieses im eigenen Programm nutzen? Windows stellt dafür das Interface IPreviewHandler zur Verfügung. Dieses Beispiel zeigt wie es funktioniert. Das schöne an diesem Interface ist, das es unabhängig von den installierten Programmen arbeiten kann. Bedeutet, sofern für eine bestimmte Datei ein PreviewHandler in der Registry vorhanden ist, wird dieser verwendet um eine Vorschau anzuzeigen. z.B. falls der ArcobatReader für PDF installiert ist, wird der PreviewHandler vom AcrobatReader verwendet. Falls z.B. der FoxitReader für PDF installiert ist, wird der PreviewHandler vom FoxitReader verwendet. Falls kein entsprechendes Programm für z.B. PDF installiert ist, wird der vorhandene Standard PreviewHandler verwendet. In den meisten Fällen wäre das für PDF der EdgeBrowser. Kurz gesagt, es wird das genutzt, was auf dem System vorhanden ist. Es muss daher keine Zusätzliche Software installiert werden. Einige Dateien besitzen teilweise mehrere PreviewHandler weswegen das Programm versucht diese in einer bestimmten Reihenfolge abzufragen um das bestmögliche herauszuholen. Die PreviewHandler sind alle in der Registry unter "HKEY_CLASSES_ROOT\.[FileExt]\ShellEx" zufinden. Das Interface IPreviewHandler kann daher eine vielzahl an Dateien für eine Vorschau laden und anzeigen. Als Alternative, falls kein PreviewHandler für eine Datei vorhanden ist bzw. IPreviewHandler komplett fehlschlägt, wird halt versucht zumindest das Icon oder ein Bild von der Datei anzuzeigen (ist so im Explorer nicht vorgesehen und daher Optional).
Im Internet gibt es diverse Beiträge wo immer wieder von Problemen mit diesem Interface und dem AcrobatReader berichtet wird. Ich habe das nun auf 3 verschiedenen Rechnern ausprobiert und hatte keine Probleme im Zusammenhang mit dem AcrobatReader. Falls jemand eine Lösung für das Problem im Zusammenhang mit diesem Interface kennt, immer her damit. Windows kann das ja offensichtlich ohne Probleme. What ever. Einfach mal diesen Code mit unterschiedlichen Dateien (PDF, Office Dokumente, Bilder, Audio, Video usw) ausprobieren. Je nach Dateityp kann es auch schon mal ein paar Sekunden dauern bis die Vorschau was anzeigt (oder die Rückgabe checken ob True oder False). Ansonsten: Das ist Testcode, keine extra Verweise oder Fremdpakete.
Ach ja, der Screenshot zeigt eine PDF die über den PreviewHandler vom AcrobatReader geladen und angezeigt wird.
Mfg -Franky-
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „-Franky-“ ()