Darin发布的链接(因此被标记为答案)不包含功能代码。我评估了发布在那里的代码(http://khason.net/blog/how-to-load-unmanaged-native-resources-from-managed-c-code/),发现它无法正常工作嵌入在任何win32 dll中的位图图像作为位图资源。
此外,汉斯帕斯坦离开了无数的步骤有效地使他的职位无用。
我已经能够找到的唯一稍微接近的解决方案来自于2004年为XP主题dll垃圾编写的文章。你可以在这里找到ThemeManager.cs http://www.codeproject.com/KB/miscctrl/XPTaskBar.aspx
然而,“GetResourcePNG”的方法,但应注意的是,我已经有很多困难的用这种方法,因为调用bitmap.RotateFlip(RotateFlipType.Rotate180FlipX) ;
我发现这里列出的代码(http://www.vbaccelerator.com/home/NET/:我的系统
更新上authui.dll内试图访问PNG图像时会导致内存问题Code/Controls/Explorer_Bar/ExplorerBar_Control_Source_Code.asp)功能最强大,产生最少的错误并产生最快的结果。该代码是用C#编写的,即使域名会另外指出。使用这两个类; ImageUtility和ResourceLibrary,您可以轻松地拉出来PNG标准的,non-.net资源库/ DLL:
public static Bitmap GetStandardResourceBitmap(String dllName, String resourceId) {
Bitmap result = null;
using (ResourceLibrary library = new ResourceLibrary() { Filename = dllName }) {
IntPtr hDib = library.GetResource(resourceId, ResourceLibrary.ImageType.IMAGE_BITMAP, ResourceLibrary.ImageLoadOptions.LR_CREATEDIBSECTION);
if (!hDib.Equals(IntPtr.Zero)) {
result = ImageUtility.DibToBitmap(hDib);
ImageUtility.DeleteObject(hDib);
}
}
return result;
}
我选择了有RESOURCEID在我的方法的字符串,不仅是因为它不需要过载和使用编号的资源ID就像添加一个'#'一样简单。
GetStandardResourceBitmap("shell32.dll", "#632");
干杯
它是一个嵌入式的资源或者是一个资源文件? – casperOne