Valhalla Legends Forums Archive | .NET Platform | Enumerating DLL Resource names

AuthorMessageTime
Myndfyr
I needed to enumerate resource names and types in the *.msstyles files (they're just DLLs), so I took it upon myself to figure it out.  Here's what I found:

[code]
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

public enum ResourceType : ushort
{
Cursor = 1,
Bitmap = 2,
Icon = 3,
Menu = 4,
Dialog = 5,
String = 6,
FontDir = 7,
Font = 8,
Accelerator = 9,
RCData = 10,
MessageTable = 11,
GroupCursor = 12,
GroupIcon = 14,
Version = 16,
PlugPlay = 19,
Vxd = 20,
AnimatedCursor = 21,
AnimatedIcon = 22,
Html = 23,
Manifest = 24
}

public delegate bool EnumResTypeProc(
IntPtr hModule,
IntPtr lpType,
IntPtr lParam
);

public delegate bool EnumResNameProc(
IntPtr hModule,
IntPtr lpszType,
IntPtr lpszName,
IntPtr lParam
);

public sealed class Kernel32
{
private Kernel32()
{

}

[DllImport("kernel32.dll")]
public static extern int GetLastError();

[DllImport("kernel32.dll")]
public static extern IntPtr FindResource(
IntPtr hModule,
string lpName,
string lpType
);

[DllImport("kernel32.dll")]
public static extern IntPtr LoadResource(
IntPtr hModule,
IntPtr hRsrc
);

[DllImport("kernel32.dll", CallingConvention=CallingConvention.StdCall)]
public static extern bool EnumResourceTypes(
IntPtr hModule,
[MarshalAs(UnmanagedType.FunctionPtr)] EnumResTypeProc lpEnumFunc,
IntPtr lParam
);

[DllImport("kernel32.dll")]
public static extern bool EnumResourceNames(
IntPtr hModule,
IntPtr lpType,
[MarshalAs(UnmanagedType.FunctionPtr)] EnumResNameProc lpEnumFunc,
IntPtr lParam
);

[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string lpFileName);

[DllImport("kernel32.dll")]
public static extern bool FreeLibrary(IntPtr hModule);
}

public class StyleResourceEnumerator
{
private StringBuilder m_sb;
private string m_res;

public StyleResourceEnumerator(string resourceFile)
{
if (!File.Exists(resourceFile))
throw new FileNotFoundException("The resource file was not found.", resourceFile);

m_res = resourceFile;
m_sb = new StringBuilder();
}

public void Enumerate()
{
IntPtr hModule = Kernel32.LoadLibrary(m_res);
if (hModule == IntPtr.Zero)
throw new Exception("LoadLibrary failed.");

if (!Kernel32.EnumResourceTypes(hModule,
new EnumResTypeProc(EnumResourceTypeCallback),
IntPtr.Zero))
{
throw new Exception("EnumResourceTypes failed with error code " + Kernel32.GetLastError().ToString("x8") + ".");
}

Kernel32.FreeLibrary(hModule);
}

protected virtual bool EnumResourceNameCallback(
IntPtr hModule,
IntPtr lpType,
IntPtr lpName,
IntPtr lParam
)
{
if (((int)lpName & 0xffff0000) != 0)
{
string lpszName = Marshal.PtrToStringAnsi(lpName);
m_sb.AppendFormat("Name: {0}{1}", lpszName, Environment.NewLine);
}
else
{
m_sb.AppendFormat("Name: {0:x4}{1}", (ushort)((int)lpType & 0xffff), Environment.NewLine);
}

return true;
}

protected virtual bool EnumResourceTypeCallback(
IntPtr hModule,
IntPtr lpType,
IntPtr lParam
)
{
if (((int)lpType & 0xffff0000) != 0)
{
string lpszType = Marshal.PtrToStringAnsi(lpType);
m_sb.AppendFormat("Type: {0}{1}", lpszType, Environment.NewLine);
}
else
{
ushort type = (ushort)((int)lpType & 0xffff);
m_sb.AppendFormat("Type: {0:x4} ({2}){1}", type, Environment.NewLine, ((ResourceType)type).ToString());
}

if (!Kernel32.EnumResourceNames(hModule,
lpType,
new EnumResNameProc(EnumResourceNameCallback),
lParam))
{
throw new Exception("EnumResourceNames failed with error code " + Kernel32.GetLastError().ToString("x8") + ".");
}

return true;
}

public override string ToString()
{
return m_sb.ToString();
}

}
[/code]

Sample output from the StyleResourceEnumerator.ToString() method:
[pre]
Type: COLORNAMES
Name: 9f40
Type: COMBODATA
Name: COMBO
Type: FILERESNAMES
Name: 9f40
Type: MINDEPTH
Name: 9f40
Type: ORIGFILENAMES
Name: 9f40
Type: PACKTHEM_VERSION
Name: 9f40
Type: SIZENAMES
Name: 9f40
Type: TEXTFILE
Name: EXTRALARGEBLUE_INI
Name: EXTRALARGEHOMESTEAD_INI
Name: EXTRALARGEMETALLIC_INI
Name: LARGEFONTSBLUE_INI
Name: LARGEFONTSHOMESTEAD_INI
Name: LARGEFONTSMETALLIC_INI
Name: NORMALBLUE_INI
Name: NORMALHOMESTEAD_INI
Name: NORMALMETALLIC_INI
Name: THEMES_INI
Type: 0002 (Bitmap)
Name: BLUE_BALLOONCLOSE_BMP
Name: BLUE_BUTTON_BMP
Name: BLUE_CAPTIONBUTTON_BMP
Name: BLUE_CHECKBOX13_BMP
Name: BLUE_CHECKBOX16_BMP
Name: BLUE_CHECKBOX25_BMP
Name: BLUE_CHEVRON_BMP
Name: BLUE_CLOSEBUTTON_BMP
Name: BLUE_CLOSEGLYPH19_BMP
Name: BLUE_CLOSEGLYPH23_BMP
Name: BLUE_CLOSEGLYPH6_BMP
Name: BLUE_CLOSEGLYPH9_BMP
Name: BLUE_CLOSEGLYPH_BMP
Name: BLUE_COMBOBUTTONGLYPH_BMP
Name: BLUE_COMBOBUTTON_BMP
Name: BLUE_EXPLORERBARHEADERBACKGROUND_BMP
Name: BLUE_EXPLORERBARHEADERCLOSE_BMP
Name: BLUE_EXPLORERBARHEADERPIN_BMP
Name: BLUE_EXPLORERBARTOOLBARBACKGROUND_BMP
Name: BLUE_EXPLORERBARTOOLBARBUTTONSSPLITDROPDOWN_BMP
Name: BLUE_EXPLORERBARTOOLBARBUTTONSSPLIT_BMP
Name: BLUE_EXPLORERBARTOOLBARBUTTONS_BMP
Name: BLUE_FIELDOUTLINEBLUE_BMP
Name: BLUE_FRAMEBOTTOM_BMP
Name: BLUE_FRAMECAPTIONMIN_BMP
Name: BLUE_FRAMECAPTIONSIZING_BMP
Name: BLUE_FRAMECAPTION_BMP
Name: BLUE_FRAMELEFT_BMP
Name: BLUE_FRAMEMAXIMIZED_BMP
Name: BLUE_FRAMERIGHT_BMP
Name: BLUE_GRIPPERVERT_BMP
Name: BLUE_GRIPPER_BMP
Name: BLUE_GROUPBOX_BMP
Name: BLUE_HELPGLYPH19_BMP
Name: BLUE_HELPGLYPH23_BMP
Name: BLUE_HELPGLYPH6_BMP
Name: BLUE_HELPGLYPH9_BMP
Name: BLUE_HELPGLYPH_BMP
Name: BLUE_IE_PERSONALBARMENU_BMP
Name: BLUE_LISTVIEWHEADERBACKGROUND_BMP
Name: BLUE_LISTVIEWHEADER_BMP
Name: BLUE_MAXIMIZEGLYPH19_BMP
Name: BLUE_MAXIMIZEGLYPH23_BMP
Name: BLUE_MAXIMIZEGLYPH6_BMP
Name: BLUE_MAXIMIZEGLYPH9_BMP
Name: BLUE_MAXIMIZEGLYPH_BMP
Name: BLUE_MDICAPTIONBUTTON_BMP
Name: BLUE_MDIGLYPHCLOSE_BMP
Name: BLUE_MDIGLYPHMINIMIZE_BMP
Name: BLUE_MDIGLYPHRESTORE_BMP
Name: BLUE_MINIMIZEGLYPH19_BMP
Name: BLUE_MINIMIZEGLYPH23_BMP
Name: BLUE_MINIMIZEGLYPH6_BMP
Name: BLUE_MINIMIZEGLYPH9_BMP
Name: BLUE_MINIMIZEGLYPH_BMP
Name: BLUE_NORMALGROUPBACKGROUND_BMP
Name: BLUE_NORMALGROUPCOLLAPSE_BMP
Name: BLUE_NORMALGROUPEXPAND_BMP
Name: BLUE_NORMALGROUPHEAD_BMP
Name: BLUE_PLACEBARBACKGROUND_BMP
Name: BLUE_PLACEBARBUTTONS_BMP
Name: BLUE_PROGRESSCHUNKVERT_BMP
Name: BLUE_PROGRESSCHUNK_BMP
Name: BLUE_PROGRESSTRACKVERT_BMP
Name: BLUE_PROGRESSTRACK_BMP
Name: BLUE_RADIOBUTTON13_BMP
Name: BLUE_RADIOBUTTON16_BMP
Name: BLUE_RADIOBUTTON25_BMP
Name: BLUE_RESIZEGRIP2_BMP
Name: BLUE_RESTOREGLYPH19_BMP
Name: BLUE_RESTOREGLYPH23_BMP
Name: BLUE_RESTOREGLYPH6_BMP
Name: BLUE_RESTOREGLYPH9_BMP
Name: BLUE_RESTOREGLYPH_BMP
Name: BLUE_SCROLLARROWGLYPHSSMALL_BMP
Name: BLUE_SCROLLARROWGLYPHS_BMP
Name: BLUE_SCROLLARROWS_BMP
Name: BLUE_SCROLLSHAFTHORIZONTAL_BMP
Name: BLUE_SCROLLSHAFTVERTICAL_BMP
Name: BLUE_SCROLLTHUMBGRIPPERHORIZONTAL_BMP
Name: BLUE_SCROLLTHUMBGRIPPERVERTICAL_BMP
Name: BLUE_SCROLLTHUMBHORIZONTAL_BMP
Name: BLUE_SCROLLTHUMBVERTICAL_BMP
Name: BLUE_SEPARATORVERT_BMP
Name: BLUE_SEPARATOR_BMP
Name: BLUE_SLIDERTRACK_BMP
Name: BLUE_SMALLCLOSEBUTTON_BMP
Name: BLUE_SMALLCLOSEGLYPH_BMP
Name: BLUE_SMALLFRAMECAPTIONSIZING_BMP
Name: BLUE_SMALLFRAMECAPTION_BMP
Name: BLUE_SPECIALGROUPBACKGROUND_BMP
Name: BLUE_SPECIALGROUPCOLLAPSE_BMP
Name: BLUE_SPECIALGROUPEXPAND_BMP
Name: BLUE_SPECIALGROUPHEAD_BMP
Name: BLUE_SPINBUTTONBACKGROUNDDOWN_BMP
Name: BLUE_SPINBUTTONBACKGROUNDLEFT_BMP
Name: BLUE_SPINBUTTONBACKGROUNDRIGHT_BMP
Name: BLUE_SPINBUTTONBACKGROUNDUP_BMP
Name: BLUE_SPINDOWNGLYPH_BMP
Name: BLUE_SPINLEFTGLYPH_BMP
Name: BLUE_SPINRIGHTGLYPH_BMP
Name: BLUE_SPINUPGLYPH_BMP
Name: BLUE_STARTBUTTON_BMP
Name: BLUE_STARTGROUPBACKGROUND_BMP
Name: BLUE_STARTGROUPNEWAPPBUTTON_BMP
Name: BLUE_STARTGROUPSEPERATOR_BMP
Name: BLUE_STARTGROUPTOOLBARBUTTON_BMP
Name: BLUE_STARTPANELLOGOFFBACKGROUND_BMP
Name: BLUE_STARTPANELLOGOFFBUTTONSHOT_BMP
Name: BLUE_STARTPANELLOGOFFBUTTONS_BMP
Name: BLUE_STARTPANELMFUBACKGROUND_BMP
Name: BLUE_STARTPANELMOREPROGARROWHOT_BMP
Name: BLUE_STARTPANELMOREPROGARROW_BMP
Name: BLUE_STARTPANELMOREPROGBACKGROUND_BMP
Name: BLUE_STARTPANELPLACESBACKGROUND_BMP
Name: BLUE_STARTPLACESSEPARATOR_BMP
Name: BLUE_STARTPROGRAMSSEPARATOR_BMP
Name: BLUE_STARTUSERPANEL_BMP
Name: BLUE_STATUSBACKGROUND_BMP
Name: BLUE_STATUSPANE_BMP
Name: BLUE_TABBACKGROUND133_BMP
Name: BLUE_TABBACKGROUND_BMP
Name: BLUE_TABITEMBOTH_BMP
Name: BLUE_TABITEMLEFT_BMP
Name: BLUE_TABITEMRIGHT_BMP
Name: BLUE_TABITEMTOPBOTH_BMP
Name: BLUE_TABITEMTOPLEFT_BMP
Name: BLUE_TABITEMTOPRIGHT_BMP
Name: BLUE_TABITEMTOP_BMP
Name: BLUE_TABITEM_BMP
Name: BLUE_TABPANEEDGE_BMP
Name: BLUE_TASKBANDBACKGROUND_BMP
Name: BLUE_TASKBANDBUTTONNOEDGEVERTICAL_BMP
Name: BLUE_TASKBANDBUTTONNOEDGE_BMP
Name: BLUE_TASKBANDBUTTONVERTICAL_BMP
Name: BLUE_TASKBANDBUTTON_BMP
Name: BLUE_TASKBANDFLASHBUTTONGROUPMENU_BMP
Name: BLUE_TASKBANDFLASHBUTTON_BMP
Name: BLUE_TASKBANDHOVER_BMP
Name: BLUE_TASKBANDSCROLLARROWGLYPHS_BMP
Name: BLUE_TASKBANDSCROLLARROWS_BMP
Name: BLUE_TASKBANDSCROLLSHAFTHORIZONTAL_BMP
Name: BLUE_TASKBANDSCROLLSHAFTVERTICAL_BMP
Name: BLUE_TASKBANDSCROLLTHUMBGRIPPERHORIZONTAL_BMP
Name: BLUE_TASKBANDSCROLLTHUMBGRIPPERVERTICAL_BMP
Name: BLUE_TASKBANDSCROLLTHUMBHORIZONTAL_BMP
Name: BLUE_TASKBANDSCROLLTHUMBVERTICAL_BMP
Name: BLUE_TASKBARBACKGROUNDVERTICAL_BMP
Name: BLUE_TASKBARBACKGROUND_BMP
Name: BLUE_TASKBARCHEVRONVERT_BMP
Name: BLUE_TASKBARCHEVRON_BMP
Name: BLUE_TASKBARGRIPPERVERTICAL_BMP
Name: BLUE_TASKBARGRIPPER_BMP
Name: BLUE_TASKBARSIZINGBARBOTTOM_BMP
Name: BLUE_TASKBARSIZINGBARLEFT_BMP
Name: BLUE_TASKBARSIZINGBARRIGHT_BMP
Name: BLUE_TASKBARSIZINGBARTOP_BMP
Name: BLUE_TASKBARTRAYVERTICAL_BMP
Name: BLUE_TASKBARTRAY_BMP
Name: BLUE_TOOLBARBACKGROUND_BMP
Name: BLUE_TOOLBARBUTTONSSPLITDROPDOWNGLYPH_BMP
Name: BLUE_TOOLBARBUTTONSSPLITDROPDOWN_BMP
Name: BLUE_TOOLBARBUTTONSSPLIT_BMP
Name: BLUE_TOOLBARBUTTONS_BMP
Name: BLUE_TOOLBARGRIPPERVERT_BMP
Name: BLUE_TOOLBARGRIPPER_BMP
Name: BLUE_TRACKBARDOWN13_BMP
Name: BLUE_TRACKBARDOWN16_BMP
Name: BLUE_TRACKBARDOWN25_BMP
Name: BLUE_TRACKBARHORIZONTAL_BMP
Name: BLUE_TRACKBARLEFT13_BMP
Name: BLUE_TRACKBARLEFT16_BMP
Name: BLUE_TRACKBARLEFT25_BMP
Name: BLUE_TRACKBARRIGHT13_BMP
Name: BLUE_TRACKBARRIGHT16_BMP
Name: BLUE_TRACKBARRIGHT25_BMP
Name: BLUE_TRACKBARUP13_BMP
Name: BLUE_TRACKBARUP16_BMP
Name: BLUE_TRACKBARUP25_BMP
Name: BLUE_TRACKBARVERTICAL_BMP
Name: BLUE_TRAYCHEVRONHORIZONTALOPEN_BMP
Name: BLUE_TRAYCHEVRONHORIZONTAL_BMP
Name: BLUE_TREEEXPANDCOLLAPSE_BMP
Name: BLUE_USERTILEBACKGROUND_BMP
Name: HOMESTEAD_BALLOONCLOSE_BMP
Name: HOMESTEAD_BUTTON_BMP
Name: HOMESTEAD_CAPTIONBUTTON_BMP
Name: HOMESTEAD_CHECKBOX13_BMP
Name: HOMESTEAD_CHECKBOX16_BMP
Name: HOMESTEAD_CHECKBOX25_BMP
Name: HOMESTEAD_CHEVRON_BMP
Name: HOMESTEAD_CLOSEBUTTON_BMP
Name: HOMESTEAD_CLOSEGLYPH19_BMP
Name: HOMESTEAD_CLOSEGLYPH23_BMP
Name: HOMESTEAD_CLOSEGLYPH6_BMP
Name: HOMESTEAD_CLOSEGLYPH9_BMP
Name: HOMESTEAD_CLOSEGLYPH_BMP
Name: HOMESTEAD_COMBOBUTTONGLYPH_BMP
Name: HOMESTEAD_COMBOBUTTON_BMP
Name: HOMESTEAD_EXPLORERBARHEADERBACKGROUND_BMP
Name: HOMESTEAD_EXPLORERBARHEADERCLOSE_BMP
Name: HOMESTEAD_EXPLORERBARHEADERPIN_BMP
Name: HOMESTEAD_EXPLORERBARTOOLBARBACKGROUND_BMP
Name: HOMESTEAD_EXPLORERBARTOOLBARBUTTONSSPLITDROPDOWN_BMP
Name: HOMESTEAD_EXPLORERBARTOOLBARBUTTONSSPLIT_BMP
Name: HOMESTEAD_EXPLORERBARTOOLBARBUTTONS_BMP
Name: HOMESTEAD_FIELDOUTLINEBLUE_BMP
Name: HOMESTEAD_FRAMEBOTTOM_BMP
Name: HOMESTEAD_FRAMECAPTIONMIN_BMP
Name: HOMESTEAD_FRAMECAPTIONSIZING_BMP
Name: HOMESTEAD_FRAMECAPTION_BMP
Name: HOMESTEAD_FRAMELEFT_BMP
Name: HOMESTEAD_FRAMEMAXIMIZED_BMP
Name: HOMESTEAD_FRAMERIGHT_BMP
Name: HOMESTEAD_GRIPPERVERT_BMP
Name: HOMESTEAD_GRIPPER_BMP
Name: HOMESTEAD_GROUPBOX_BMP
Name: HOMESTEAD_HELPGLYPH19_BMP
Name: HOMESTEAD_HELPGLYPH23_BMP
Name: HOMESTEAD_HELPGLYPH6_BMP
Name: HOMESTEAD_HELPGLYPH9_BMP
Name: HOMESTEAD_HELPGLYPH_BMP
Name: HOMESTEAD_IE_PERSONALBARMENU_BMP
Name: HOMESTEAD_LISTVIEWHEADERBACKGROUND_BMP
Name: HOMESTEAD_LISTVIEWHEADER_BMP
Name: HOMESTEAD_MAXIMIZEGLYPH19_BMP
Name: HOMESTEAD_MAXIMIZEGLYPH23_BMP
Name: HOMESTEAD_MAXIMIZEGLYPH6_BMP
Name: HOMESTEAD_MAXIMIZEGLYPH9_BMP
Name: HOMESTEAD_MAXIMIZEGLYPH_BMP
Name: HOMESTEAD_MDICAPTIONBUTTON_BMP
Name: HOMESTEAD_MDIGLYPHCLOSE_BMP
Name: HOMESTEAD_MDIGLYPHMINIMIZE_BMP
Name: HOMESTEAD_MDIGLYPHRESTORE_BMP
Name: HOMESTEAD_MINIMIZEGLYPH19_BMP
Name: HOMESTEAD_MINIMIZEGLYPH23_BMP
Name: HOMESTEAD_MINIMIZEGLYPH6_BMP
Name: HOMESTEAD_MINIMIZEGLYPH9_BMP
Name: HOMESTEAD_MINIMIZEGLYPH_BMP
Name: HOMESTEAD_NORMALGROUPBACKGROUND_BMP
Name: HOMESTEAD_NORMALGROUPCOLLAPSE_BMP
Name: HOMESTEAD_NORMALGROUPEXPAND_BMP
Name: HOMESTEAD_NORMALGROUPHEAD_BMP
Name: HOMESTEAD_PLACEBARBACKGROUND_BMP
Name: HOMESTEAD_PLACEBARBUTTONS_BMP
Name: HOMESTEAD_PROGRESSCHUNKVERT_BMP
Name: HOMESTEAD_PROGRESSCHUNK_BMP
Name: HOMESTEAD_PROGRESSTRACKVERT_BMP
Name: HOMESTEAD_PROGRESSTRACK_BMP
Name: HOMESTEAD_RADIOBUTTON13_BMP
Name: HOMESTEAD_RADIOBUTTON16_BMP
Name: HOMESTEAD_RADIOBUTTON25_BMP
Name: HOMESTEAD_RESIZEGRIP2_BMP
Name: HOMESTEAD_RESTOREGLYPH19_BMP
Name: HOMESTEAD_RESTOREGLYPH23_BMP
Name: HOMESTEAD_RESTOREGLYPH6_BMP
Name: HOMESTEAD_RESTOREGLYPH9_BMP
Name: HOMESTEAD_RESTOREGLYPH_BMP
Name: HOMESTEAD_SCROLLARROWGLYPHSSMALL_BMP
Name: HOMESTEAD_SCROLLARROWGLYPHS_BMP
Name: HOMESTEAD_SCROLLARROWS_BMP
Name: HOMESTEAD_SCROLLSHAFTHORIZONTAL_BMP
Name: HOMESTEAD_SCROLLSHAFTVERTICAL_BMP
Name: HOMESTEAD_SCROLLTHUMBGRIPPERHORIZONTAL_BMP
Name: HOMESTEAD_SCROLLTHUMBGRIPPERVERTICAL_BMP
Name: HOMESTEAD_SCROLLTHUMBHORIZONTAL_BMP
Name: HOMESTEAD_SCROLLTHUMBVERTICAL_BMP
Name: HOMESTEAD_SEPARATORVERT_BMP
Name: HOMESTEAD_SEPARATOR_BMP
Name: HOMESTEAD_SLIDERTRACK_BMP
Name: HOMESTEAD_SMALLCLOSEBUTTON_BMP
Name: HOMESTEAD_SMALLCLOSEGLYPH_BMP
Name: HOMESTEAD_SMALLFRAMECAPTIONSIZING_BMP
Name: HOMESTEAD_SMALLFRAMECAPTION_BMP
Name: HOMESTEAD_SPECIALGROUPBACKGROUND_BMP
Name: HOMESTEAD_SPECIALGROUPCOLLAPSE_BMP
Name: HOMESTEAD_SPECIALGROUPEXPAND_BMP
Name: HOMESTEAD_SPECIALGROUPHEAD_BMP
Name: HOMESTEAD_SPINBUTTONBACKGROUNDDOWN_BMP
Name: HOMESTEAD_SPINBUTTONBACKGROUNDLEFT_BMP
Name: HOMESTEAD_SPINBUTTONBACKGROUNDRIGHT_BMP
Name: HOMESTEAD_SPINBUTTONBACKGROUNDUP_BMP
Name: HOMESTEAD_SPINDOWNGLYPH_BMP
Name: HOMESTEAD_SPINLEFTGLYPH_BMP
Name: HOMESTEAD_SPINRIGHTGLYPH_BMP
Name: HOMESTEAD_SPINUPGLYPH_BMP
Name: HOMESTEAD_STARTBUTTON_BMP
Name: HOMESTEAD_STARTGROUPBACKGROUND_BMP
Name: HOMESTEAD_STARTGROUPNEWAPPBUTTON_BMP
Name: HOMESTEAD_STARTGROUPSEPERATOR_BMP
Name: HOMESTEAD_STARTGROUPTOOLBARBUTTON_BMP
Name: HOMESTEAD_STARTPANELLOGOFFBACKGROUND_BMP
Name: HOMESTEAD_STARTPANELLOGOFFBUTTONSHOT_BMP
Name: HOMESTEAD_STARTPANELLOGOFFBUTTONS_BMP
Name: HOMESTEAD_STARTPANELMFUBACKGROUND_BMP
Name: HOMESTEAD_STARTPANELMOREPROGARROWHOT_BMP
Name: HOMESTEAD_STARTPANELMOREPROGARROW_BMP
Name: HOMESTEAD_STARTPANELMOREPROGBACKGROUND_BMP
Name: HOMESTEAD_STARTPANELPLACESBACKGROUND_BMP
Name: HOMESTEAD_STARTPLACESSEPARATOR_BMP
Name: HOMESTEAD_STARTPROGRAMSSEPARATOR_BMP
Name: HOMESTEAD_STARTUSERPANEL_BMP
Name: HOMESTEAD_STATUSBACKGROUND_BMP
Name: HOMESTEAD_STATUSPANE_BMP
Name: HOMESTEAD_TABBACKGROUND133_BMP
Name: HOMESTEAD_TABBACKGROUND_BMP
Name: HOMESTEAD_TABITEMBOTH_BMP
Name: HOMESTEAD_TABITEMLEFT_BMP
Name: HOMESTEAD_TABITEMRIGHT_BMP
Name: HOMESTEAD_TABITEMTOPBOTH_BMP
Name: HOMESTEAD_TABITEMTOPLEFT_BMP
Name: HOMESTEAD_TABITEMTOPRIGHT_BMP
Name: HOMESTEAD_TABITEMTOP_BMP
Name: HOMESTEAD_TABITEM_BMP
Name: HOMESTEAD_TABPANEEDGE_BMP
Name: HOMESTEAD_TASKBANDBACKGROUND_BMP
Name: HOMESTEAD_TASKBANDBUTTONNOEDGEVERTICAL_BMP
Name: HOMESTEAD_TASKBANDBUTTONNOEDGE_BMP
Name: HOMESTEAD_TASKBANDBUTTONVERTICAL_BMP
Name: HOMESTEAD_TASKBANDBUTTON_BMP
Name: HOMESTEAD_TASKBANDFLASHBUTTONGROUPMENU_BMP
Name: HOMESTEAD_TASKBANDFLASHBUTTON_BMP
Name: HOMESTEAD_TASKBANDHOVER_BMP
Name: HOMESTEAD_TASKBANDSCROLLARROWGLYPHS_BMP
Name: HOMESTEAD_TASKBANDSCROLLARROWS_BMP
Name: HOMESTEAD_TASKBANDSCROLLSHAFTHORIZONTAL_BMP
Name: HOMESTEAD_TASKBANDSCROLLSHAFTVERTICAL_BMP
Name: HOMESTEAD_TASKBANDSCROLLTHUMBGRIPPERHORIZONTAL_BMP
Name: HOMESTEAD_TASKBANDSCROLLTHUMBGRIPPERVERTICAL_BMP
Name: HOMESTEAD_TASKBANDSCROLLTHUMBHORIZONTAL_BMP
Name: HOMESTEAD_TASKBANDSCROLLTHUMBVERTICAL_BMP
Name: HOMESTEAD_TASKBARBACKGROUNDVERTICAL_BMP
Name: HOMESTEAD_TASKBARBACKGROUND_BMP
Name: HOMESTEAD_TASKBARCHEVRONVERT_BMP
Name: HOMESTEAD_TASKBARCHEVRON_BMP
Name: HOMESTEAD_TASKBARGRIPPERVERTICAL_BMP
Name: HOMESTEAD_TASKBARGRIPPER_BMP
Name: HOMESTEAD_TASKBARSIZINGBARBOTTOM_BMP
Name: HOMESTEAD_TASKBARSIZINGBARLEFT_BMP
Name: HOMESTEAD_TASKBARSIZINGBARRIGHT_BMP
Name: HOMESTEAD_TASKBARSIZINGBARTOP_BMP
Name: HOMESTEAD_TASKBARTRAYVERTICAL_BMP
Name: HOMESTEAD_TASKBARTRAY_BMP
Name: HOMESTEAD_TOOLBARBACKGROUND_BMP
Name: HOMESTEAD_TOOLBARBUTTONSSPLITDROPDOWNGLYPH_BMP
Name: HOMESTEAD_TOOLBARBUTTONSSPLITDROPDOWN_BMP
Name: HOMESTEAD_TOOLBARBUTTONSSPLIT_BMP
Name: HOMESTEAD_TOOLBARBUTTONS_BMP
Name: HOMESTEAD_TOOLBARGRIPPERVERT_BMP
Name: HOMESTEAD_TOOLBARGRIPPER_BMP
Name: HOMESTEAD_TRACKBARDOWN13_BMP
Name: HOMESTEAD_TRACKBARDOWN16_BMP
Name: HOMESTEAD_TRACKBARDOWN25_BMP
Name: HOMESTEAD_TRACKBARHORIZONTAL_BMP
Name: HOMESTEAD_TRACKBARLEFT13_BMP
Name: HOMESTEAD_TRACKBARLEFT16_BMP
Name: HOMESTEAD_TRACKBARLEFT25_BMP
Name: HOMESTEAD_TRACKBARRIGHT13_BMP
Name: HOMESTEAD_TRACKBARRIGHT16_BMP
Name: HOMESTEAD_TRACKBARRIGHT25_BMP
Name: HOMESTEAD_TRACKBARUP13_BMP
Name: HOMESTEAD_TRACKBARUP16_BMP
Name: HOMESTEAD_TRACKBARUP25_BMP
Name: HOMESTEAD_TRACKBARVERTICAL_BMP
Name: HOMESTEAD_TRAYCHEVRONHORIZONTALOPEN_BMP
Name: HOMESTEAD_TRAYCHEVRONHORIZONTAL_BMP
Name: HOMESTEAD_TREEEXPANDCOLLAPSE_BMP
Name: HOMESTEAD_USERTILEBACKGROUND_BMP
Name: METALLIC_BALLOONCLOSE_BMP
Name: METALLIC_BUTTON_BMP
Name: METALLIC_CAPTIONBUTTON_BMP
Name: METALLIC_CHECKBOX13_BMP
Name: METALLIC_CHECKBOX16_BMP
Name: METALLIC_CHECKBOX25_BMP
Name: METALLIC_CHEVRON_BMP
Name: METALLIC_CLOSEBUTTON_BMP
Name: METALLIC_CLOSEGLYPH19_BMP
Name: METALLIC_CLOSEGLYPH23_BMP
Name: METALLIC_CLOSEGLYPH6_BMP
Name: METALLIC_CLOSEGLYPH9_BMP
Name: METALLIC_CLOSEGLYPH_BMP
Name: METALLIC_COMBOBUTTONGLYPH_BMP
Name: METALLIC_COMBOBUTTON_BMP
Name: METALLIC_EXPLORERBARHEADERBACKGROUND_BMP
Name: METALLIC_EXPLORERBARHEADERCLOSE_BMP
Name: METALLIC_EXPLORERBARHEADERPIN_BMP
Name: METALLIC_EXPLORERBARTOOLBARBACKGROUND_BMP
Name: METALLIC_EXPLORERBARTOOLBARBUTTONSSPLITDROPDOWN_BMP
Name: METALLIC_EXPLORERBARTOOLBARBUTTONSSPLIT_BMP
Name: METALLIC_EXPLORERBARTOOLBARBUTTONS_BMP
Name: METALLIC_FIELDOUTLINEBLUE_BMP
Name: METALLIC_FRAMEBOTTOM_BMP
Name: METALLIC_FRAMECAPTIONMIN_BMP
Name: METALLIC_FRAMECAPTIONSIZING_BMP
Name: METALLIC_FRAMECAPTION_BMP
Name: METALLIC_FRAMELEFT_BMP
Name: METALLIC_FRAMEMAXIMIZED_BMP
Name: METALLIC_FRAMERIGHT_BMP
Name: METALLIC_GRIPPERVERT_BMP
Name: METALLIC_GRIPPER_BMP
Name: METALLIC_GROUPBOX_BMP
Name: METALLIC_HELPGLYPH19_BMP
Name: METALLIC_HELPGLYPH23_BMP
Name: METALLIC_HELPGLYPH6_BMP
Name: METALLIC_HELPGLYPH9_BMP
Name: METALLIC_HELPGLYPH_BMP
Name: METALLIC_IE_PERSONALBARMENU_BMP
Name: METALLIC_LISTVIEWHEADERBACKGROUND_BMP
Name: METALLIC_LISTVIEWHEADER_BMP
Name: METALLIC_MAXIMIZEGLYPH19_BMP
Name: METALLIC_MAXIMIZEGLYPH23_BMP
Name: METALLIC_MAXIMIZEGLYPH6_BMP
Name: METALLIC_MAXIMIZEGLYPH9_BMP
Name: METALLIC_MAXIMIZEGLYPH_BMP
Name: METALLIC_MDICAPTIONBUTTON_BMP
Name: METALLIC_MDIGLYPHCLOSE_BMP
Name: METALLIC_MDIGLYPHMINIMIZE_BMP
Name: METALLIC_MDIGLYPHRESTORE_BMP
Name: METALLIC_MINIMIZEGLYPH19_BMP
Name: METALLIC_MINIMIZEGLYPH23_BMP
Name: METALLIC_MINIMIZEGLYPH6_BMP
Name: METALLIC_MINIMIZEGLYPH9_BMP
Name: METALLIC_MINIMIZEGLYPH_BMP
Name: METALLIC_NORMALGROUPBACKGROUND_BMP
Name: METALLIC_NORMALGROUPCOLLAPSE_BMP
Name: METALLIC_NORMALGROUPEXPAND_BMP
Name: METALLIC_NORMALGROUPHEAD_BMP
Name: METALLIC_PLACEBARBACKGROUND_BMP
Name: METALLIC_PLACEBARBUTTONS_BMP
Name: METALLIC_PROGRESSCHUNKVERT_BMP
Name: METALLIC_PROGRESSCHUNK_BMP
Name: METALLIC_PROGRESSTRACKVERT_BMP
Name: METALLIC_PROGRESSTRACK_BMP
Name: METALLIC_RADIOBUTTON13_BMP
Name: METALLIC_RADIOBUTTON16_BMP
Name: METALLIC_RADIOBUTTON25_BMP
Name: METALLIC_RESIZEGRIP2_BMP
Name: METALLIC_RESTOREGLYPH19_BMP
Name: METALLIC_RESTOREGLYPH23_BMP
Name: METALLIC_RESTOREGLYPH6_BMP
Name: METALLIC_RESTOREGLYPH9_BMP
Name: METALLIC_RESTOREGLYPH_BMP
Name: METALLIC_SCROLLARROWGLYPHSSMALL_BMP
Name: METALLIC_SCROLLARROWGLYPHS_BMP
Name: METALLIC_SCROLLARROWS_BMP
Name: METALLIC_SCROLLSHAFTHORIZONTAL_BMP
Name: METALLIC_SCROLLSHAFTVERTICAL_BMP
Name: METALLIC_SCROLLTHUMBGRIPPERHORIZONTAL_BMP
Name: METALLIC_SCROLLTHUMBGRIPPERVERTICAL_BMP
Name: METALLIC_SCROLLTHUMBHORIZONTAL_BMP
Name: METALLIC_SCROLLTHUMBVERTICAL_BMP
Name: METALLIC_SEPARATORVERT_BMP
Name: METALLIC_SEPARATOR_BMP
Name: METALLIC_SLIDERTRACK_BMP
Name: METALLIC_SMALLCLOSEBUTTON_BMP
Name: METALLIC_SMALLCLOSEGLYPH_BMP
Name: METALLIC_SMALLFRAMECAPTIONSIZING_BMP
Name: METALLIC_SMALLFRAMECAPTION_BMP
Name: METALLIC_SPECIALGROUPBACKGROUND_BMP
Name: METALLIC_SPECIALGROUPCOLLAPSE_BMP
Name: METALLIC_SPECIALGROUPEXPAND_BMP
Name: METALLIC_SPECIALGROUPHEAD_BMP
Name: METALLIC_SPINBUTTONBACKGROUNDDOWN_BMP
Name: METALLIC_SPINBUTTONBACKGROUNDLEFT_BMP
Name: METALLIC_SPINBUTTONBACKGROUNDRIGHT_BMP
Name: METALLIC_SPINBUTTONBACKGROUNDUP_BMP
Name: METALLIC_SPINDOWNGLYPH_BMP
Name: METALLIC_SPINLEFTGLYPH_BMP
Name: METALLIC_SPINRIGHTGLYPH_BMP
Name: METALLIC_SPINUPGLYPH_BMP
Name: METALLIC_STARTBUTTON_BMP
Name: METALLIC_STARTGROUPBACKGROUND_BMP
Name: METALLIC_STARTGROUPNEWAPPBUTTON_BMP
Name: METALLIC_STARTGROUPSEPERATOR_BMP
Name: METALLIC_STARTGROUPTOOLBARBUTTON_BMP
Name: METALLIC_STARTPANELLOGOFFBACKGROUND_BMP
Name: METALLIC_STARTPANELLOGOFFBUTTONSHOT_BMP
Name: METALLIC_STARTPANELLOGOFFBUTTONS_BMP
Name: METALLIC_STARTPANELMFUBACKGROUND_BMP
Name: METALLIC_STARTPANELMOREPROGARROWHOT_BMP
Name: METALLIC_STARTPANELMOREPROGARROW_BMP
Name: METALLIC_STARTPANELMOREPROGBACKGROUND_BMP
Name: METALLIC_STARTPANELPLACESBACKGROUND_BMP
Name: METALLIC_STARTPLACESSEPARATOR_BMP
Name: METALLIC_STARTPROGRAMSSEPARATOR_BMP
Name: METALLIC_STARTUSERPANEL_BMP
Name: METALLIC_STATUSBACKGROUND_BMP
Name: METALLIC_STATUSPANE_BMP
Name: METALLIC_TABBACKGROUND133_BMP
Name: METALLIC_TABBACKGROUND_BMP
Name: METALLIC_TABITEMBOTH_BMP
Name: METALLIC_TABITEMLEFT_BMP
Name: METALLIC_TABITEMRIGHT_BMP
Name: METALLIC_TABITEMTOPBOTH_BMP
Name: METALLIC_TABITEMTOPLEFT_BMP
Name: METALLIC_TABITEMTOPRIGHT_BMP
Name: METALLIC_TABITEMTOP_BMP
Name: METALLIC_TABITEM_BMP
Name: METALLIC_TABPANEEDGE_BMP
Name: METALLIC_TASKBANDBACKGROUND_BMP
Name: METALLIC_TASKBANDBUTTONNOEDGEVERTICAL_BMP
Name: METALLIC_TASKBANDBUTTONNOEDGE_BMP
Name: METALLIC_TASKBANDBUTTONVERTICAL_BMP
Name: METALLIC_TASKBANDBUTTON_BMP
Name: METALLIC_TASKBANDFLASHBUTTONGROUPMENU_BMP
Name: METALLIC_TASKBANDFLASHBUTTON_BMP
Name: METALLIC_TASKBANDHOVER_BMP
Name: METALLIC_TASKBANDSCROLLARROWGLYPHS_BMP
Name: METALLIC_TASKBANDSCROLLARROWS_BMP
Name: METALLIC_TASKBANDSCROLLSHAFTHORIZONTAL_BMP
Name: METALLIC_TASKBANDSCROLLSHAFTVERTICAL_BMP
Name: METALLIC_TASKBANDSCROLLTHUMBGRIPPERHORIZONTAL_BMP
Name: METALLIC_TASKBANDSCROLLTHUMBGRIPPERVERTICAL_BMP
Name: METALLIC_TASKBANDSCROLLTHUMBHORIZONTAL_BMP
Name: METALLIC_TASKBANDSCROLLTHUMBVERTICAL_BMP
Name: METALLIC_TASKBARBACKGROUNDVERTICAL_BMP
Name: METALLIC_TASKBARBACKGROUND_BMP
Name: METALLIC_TASKBARCHEVRONVERT_BMP
Name: METALLIC_TASKBARCHEVRON_BMP
Name: METALLIC_TASKBARGRIPPERVERTICAL_BMP
Name: METALLIC_TASKBARGRIPPER_BMP
Name: METALLIC_TASKBARSIZINGBARBOTTOM_BMP
Name: METALLIC_TASKBARSIZINGBARLEFT_BMP
Name: METALLIC_TASKBARSIZINGBARRIGHT_BMP
Name: METALLIC_TASKBARSIZINGBARTOP_BMP
Name: METALLIC_TASKBARTRAYVERTICAL_BMP
Name: METALLIC_TASKBARTRAY_BMP
Name: METALLIC_TOOLBARBACKGROUND_BMP
Name: METALLIC_TOOLBARBUTTONSSPLITDROPDOWNGLYPH_BMP
Name: METALLIC_TOOLBARBUTTONSSPLITDROPDOWN_BMP
Name: METALLIC_TOOLBARBUTTONSSPLIT_BMP
Name: METALLIC_TOOLBARBUTTONS_BMP
Name: METALLIC_TOOLBARGRIPPERVERT_BMP
Name: METALLIC_TOOLBARGRIPPER_BMP
Name: METALLIC_TRACKBARDOWN13_BMP
Name: METALLIC_TRACKBARDOWN16_BMP
Name: METALLIC_TRACKBARDOWN25_BMP
Name: METALLIC_TRACKBARHORIZONTAL_BMP
Name: METALLIC_TRACKBARLEFT13_BMP
Name: METALLIC_TRACKBARLEFT16_BMP
Name: METALLIC_TRACKBARLEFT25_BMP
Name: METALLIC_TRACKBARRIGHT13_BMP
Name: METALLIC_TRACKBARRIGHT16_BMP
Name: METALLIC_TRACKBARRIGHT25_BMP
Name: METALLIC_TRACKBARUP13_BMP
Name: METALLIC_TRACKBARUP16_BMP
Name: METALLIC_TRACKBARUP25_BMP
Name: METALLIC_TRACKBARVERTICAL_BMP
Name: METALLIC_TRAYCHEVRONHORIZONTALOPEN_BMP
Name: METALLIC_TRAYCHEVRONHORIZONTAL_BMP
Name: METALLIC_TREEEXPANDCOLLAPSE_BMP
Name: METALLIC_USERTILEBACKGROUND_BMP
Type: 0006 (String)
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Name: 0006
Type: 0010 (Version)
Name: 0010
[/pre]

I don't know, just thought it might be interesting to someone.  Of interest includes the Marshal.PtrToStringAnsi function.

Also of note: I originally specified the callback delegats to accept a string variable for lpType and lpName, because the Win32 API specifies that they're LPCTSTR and LPTSTR, respectively.  I was getting a weird error (0x000003e9 I believe, or something like that) which, when looked up, said Invalid Memory Access.  I tried a few things, and a sample indicated that they're not always strings (they might be built-in resource type identifiers, as indicated by the ResourceType enumeration).  So I changed them to IntPtr and conditionally use the Marshal.PtrToStringAnsi function when I know it's a string.
October 19, 2005, 5:20 PM

Search