Resource Explorer (DLL/Exe) using C#
After long time we are with the Resource Explorer.
This is verymuch usefull for the resource management in the Application/DLL.
Purspose
You are having the images/icon in other dll then you can load and use that particular image/icon using the below concept
Source Code:
public partial class frmAssemblyHandling : Form
{
public frmAssemblyHandling()
{
InitializeComponent();
}
private void btnSelectDLL_Click(object sender, EventArgs e)
{
//the required resources to filter from the available
ArrayList arImageFilter = new ArrayList();
arImageFilter.AddRange(new string[] { ".png", ".ico", ".bmp", ".png" });
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "DLL Files (*.Dll)|*.dll|Application Files (*.exe)|*.exe";
if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
try
{
lblAssemblyPath.Text = fd.FileName.ToString().Trim();
//load the selected assembly
var asm = Assembly.LoadFile(lblAssemblyPath.Text.Trim());
string resName = asm.GetName().Name + ".g.resources"; //open the resources
using (var stream = asm.GetManifestResourceStream(resName))
using (var reader = new System.Resources.ResourceReader(stream))
{
//filtering the resource and add the path to listbox
lstResources.DataSource = reader.Cast<DictionaryEntry>().Where(x =>
arImageFilter.Contains(System.IO.Path.GetExtension(x.Key.ToString()))).Select(entry =>
(string)entry.Key).ToArray();
}
}
catch (Exception ex)
{
lblAssemblyPath.Text = string.Empty;
MessageBox.Show(string.Format("Unable to load the resource(s) from {0}",
fd.FileName.ToString().Trim()), "Resource Explorer",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (!lblAssemblyPath.Text.Trim().Equals(string.Empty))
{
string sAssemblyPath = lblAssemblyPath.Text.Trim();
if (System.IO.File.Exists(sAssemblyPath))
{
var asm = Assembly.LoadFile(sAssemblyPath);
string resName = asm.GetName().Name + ".g.resources";
using (var stream = asm.GetManifestResourceStream(resName))
using (var reader = new System.Resources.ResourceReader(stream))
{
//select the specific resource
//and convert it to stream->image and display in the picture box
pictureBox1.Image = Image.FromStream((reader.Cast<DictionaryEntry>().Where(x =>
x.Key.Equals(lstResources.SelectedItem.ToString())).Select(entry =>
(System.IO.Stream)entry.Value).FirstOrDefault()));
}
}
}
}
}
Screen Shots
1. Application Interface
This is verymuch usefull for the resource management in the Application/DLL.
Purspose
You are having the images/icon in other dll then you can load and use that particular image/icon using the below concept
Source Code:
public partial class frmAssemblyHandling : Form
{
public frmAssemblyHandling()
{
InitializeComponent();
}
private void btnSelectDLL_Click(object sender, EventArgs e)
{
//the required resources to filter from the available
ArrayList arImageFilter = new ArrayList();
arImageFilter.AddRange(new string[] { ".png", ".ico", ".bmp", ".png" });
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "DLL Files (*.Dll)|*.dll|Application Files (*.exe)|*.exe";
if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
try
{
lblAssemblyPath.Text = fd.FileName.ToString().Trim();
//load the selected assembly
var asm = Assembly.LoadFile(lblAssemblyPath.Text.Trim());
string resName = asm.GetName().Name + ".g.resources"; //open the resources
using (var stream = asm.GetManifestResourceStream(resName))
using (var reader = new System.Resources.ResourceReader(stream))
{
//filtering the resource and add the path to listbox
lstResources.DataSource = reader.Cast<DictionaryEntry>().Where(x =>
arImageFilter.Contains(System.IO.Path.GetExtension(x.Key.ToString()))).Select(entry =>
(string)entry.Key).ToArray();
}
}
catch (Exception ex)
{
lblAssemblyPath.Text = string.Empty;
MessageBox.Show(string.Format("Unable to load the resource(s) from {0}",
fd.FileName.ToString().Trim()), "Resource Explorer",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (!lblAssemblyPath.Text.Trim().Equals(string.Empty))
{
string sAssemblyPath = lblAssemblyPath.Text.Trim();
if (System.IO.File.Exists(sAssemblyPath))
{
var asm = Assembly.LoadFile(sAssemblyPath);
string resName = asm.GetName().Name + ".g.resources";
using (var stream = asm.GetManifestResourceStream(resName))
using (var reader = new System.Resources.ResourceReader(stream))
{
//select the specific resource
//and convert it to stream->image and display in the picture box
pictureBox1.Image = Image.FromStream((reader.Cast<DictionaryEntry>().Where(x =>
x.Key.Equals(lstResources.SelectedItem.ToString())).Select(entry =>
(System.IO.Stream)entry.Value).FirstOrDefault()));
}
}
}
}
}
Screen Shots
1. Application Interface
2. Sample Resource (DLL)
Comments
The polygamous Casino offers you 양방배팅 everything 블랙 잭 전략 you 예스 벳 88 need to know about the 브라 벗기 world's most 월드 벳 famous slots and table games.