From 7bf04600054689cc9e2a061101467c0a6a0a377f Mon Sep 17 00:00:00 2001 From: Ozgur Ozcitak Date: Mon, 10 Dec 2018 18:41:16 +0300 Subject: [PATCH] Use absolute path in extractor. --- ImageListView/Extractor.cs | 28 ++++++++++++++++++++++++---- ImageListViewDemo/DemoForm.cs | 4 ++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/ImageListView/Extractor.cs b/ImageListView/Extractor.cs index 2492d0e5..cf0c0ef9 100644 --- a/ImageListView/Extractor.cs +++ b/ImageListView/Extractor.cs @@ -18,6 +18,8 @@ // WIC support coded by Jens using System; +using System.IO; +using System.Linq; using System.Reflection; namespace Manina.Windows.Forms @@ -48,21 +50,39 @@ public static IExtractor Instance { try { - Assembly assembly = Assembly.LoadFrom("WPFThumbnailExtractor.dll"); - Type type = assembly.GetType("WPFExtractor"); - instance = (IExtractor)Activator.CreateInstance(type); + string programFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + string pluginFileName = Path.Combine(programFolder, "WPFThumbnailExtractor.dll"); + instance = LoadFrom(pluginFileName); } - catch + catch (Exception e) { + System.Windows.Forms.MessageBox.Show(e.ToString()); instance = new GDIExtractor(); } } } + if (instance == null) + instance = new GDIExtractor(); + return instance; } } + private static IExtractor LoadFrom(string pluginFileName) + { + Assembly assembly = Assembly.LoadFrom(pluginFileName); + foreach (Type type in assembly.GetTypes()) + { + if (type.GetInterfaces().Contains(typeof(IExtractor)) && !type.IsInterface && type.IsClass && !type.IsAbstract) + { + return (IExtractor)Activator.CreateInstance(type, new object[0]); + } + } + + return null; + } + public static bool UseWIC { get diff --git a/ImageListViewDemo/DemoForm.cs b/ImageListViewDemo/DemoForm.cs index ed1478b0..c7ca669a 100644 --- a/ImageListViewDemo/DemoForm.cs +++ b/ImageListViewDemo/DemoForm.cs @@ -482,8 +482,8 @@ private void PopulateListView(DirectoryInfo path) } foreach (FileInfo p in files) { - if (p.Name.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || - p.Name.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase) || + if (p.Name.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase) || + p.Name.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || p.Name.EndsWith(".png", StringComparison.OrdinalIgnoreCase) || p.Name.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase) || p.Name.EndsWith(".ico", StringComparison.OrdinalIgnoreCase) ||