Beispiel #1
0
        public static string LoadStringFrom(string dllPath, string resourceName)
        {
            if (IOExtensions.IsClrImage(dllPath))
            {
                var assm   = Assembly.LoadFile(dllPath);
                var stream = assm.GetManifestResourceStream(resourceName);

                if (stream == null)
                {
                    var names = assm.GetManifestResourceNames();

                    foreach (var name in names)
                    {
                        try
                        {
                            stream = assm.GetManifestResourceStream(name);

                            var resourceReader = new ResourceReader(stream);
                            var nameFind       = resourceReader.Cast <DictionaryEntry>().SingleOrDefault(k => ((string)k.Key) == resourceName);

                            if (nameFind.Key != null)
                            {
                                return((string)nameFind.Value);
                            }
                        }
                        catch
                        {
                        }
                    }
                }
            }
            else
            {
                var buffer = new StringBuilder(MAX_PATH);
                var hInst  = LoadLibrary(dllPath);
                var id     = 0;

                if (resourceName.StartsWith("#"))
                {
                    id = int.Parse(resourceName.RemoveStart(1));
                }
                else
                {
                    id = int.Parse(resourceName);
                }

                if (hInst != IntPtr.Zero)
                {
                    var length = LoadString(hInst, (uint)id, buffer, MAX_PATH);

                    if (length > 0)
                    {
                        return(buffer.ToString());
                    }
                }
            }

            return(null);
        }
Beispiel #2
0
        public static Icon LoadIconFrom(string dllPath, string resourceName)
        {
            var uri = new Uri(dllPath);

            if (uri.Scheme == "file")
            {
                dllPath = uri.LocalPath;
            }

            if (IOExtensions.IsClrImage(dllPath))
            {
                var assm   = Assembly.LoadFile(dllPath);
                var stream = assm.GetManifestResourceStream(resourceName);

                if (stream == null)
                {
                    var names = assm.GetManifestResourceNames();

                    foreach (var name in names)
                    {
                        try
                        {
                            stream = assm.GetManifestResourceStream(name);

                            var resourceReader = new ResourceReader(stream);
                            var nameFind       = resourceReader.Cast <DictionaryEntry>().SingleOrDefault(k => ((string)k.Key) == resourceName);

                            if (nameFind.Key != null)
                            {
                                return((Icon)nameFind.Value);
                            }
                        }
                        catch
                        {
                        }
                    }
                }
            }
            else
            {
                var buffer = new StringBuilder(MAX_PATH);
                var hInst  = LoadLibrary(dllPath);

                if (hInst != IntPtr.Zero)
                {
                    var hIcon = LoadIcon(hInst, resourceName);

                    if (hIcon != IntPtr.Zero)
                    {
                        return(Icon.FromHandle(hIcon));
                    }
                    else
                    {
                        var id = 0;

                        if (resourceName.StartsWith("#"))
                        {
                            id = int.Parse(resourceName.RemoveStart(1));
                        }
                        else
                        {
                            id = int.Parse(resourceName);
                        }

                        hIcon = LoadIcon(hInst, id);

                        if (hIcon != IntPtr.Zero)
                        {
                            return(Icon.FromHandle(hIcon));
                        }
                    }
                }
            }

            return(null);
        }