我尝试从imgres32.dll
加载图片。我试图这样做:
加载dll:
dll_h = LoadLibrary(@"C:\Windows\System32\imgres32.dll");
将句柄传递给执行ressource加载的函数:
Bitmap b = GetImageResource(dll_h, "1002");
该功能如下所示:
static Bitmap GetImageResource(IntPtr handle, string resourceId)
{
IntPtr img_ptr = NativeMethods.LoadImage(handle, resourceId, IMAGE_BITMAP, 0, 0, 0);
if (img_ptr == IntPtr.Zero)
throw new System.ComponentModel.Win32Exception((int)NativeMethods.GetLastError());
return Image.FromHbitmap(img_ptr);
}
无论我输入哪些参数,我总是得到错误代码1813,意思是
在图像文件中找不到指定的资源类型。
当我在Visual Studio中打开文件时,我看到一个名为Icon
的文件夹,其中包含一个ID为1002
的图片。
当我点击它时,它会显示包含不同分辨率的几个位图图像,其中包含一个分辨率为16 x 16
的图像。但是当我打电话时
LoadImage(handle, resourceId, IMAGE_BITMAP, 16, 16, 0);
这不是任何其他参数组合都不起作用,我总是得到错误1813
。
IMAGE_BITMAP
是一个常量int设置为0
,与记录的here相同,与IMAGE_ICON
和IMAGE_CURSOR
相同,但它们都不起作用。
非常感谢帮助。感谢。
答案 0 :(得分:1)
您应该在资源ID前加上#。这样称呼:
GetImageResource(dll_h, "#1002");