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