我试图从imgres32.dll加载一个图像。我试着这样做:
加载dll:
dll_h = LoadLibrary(@"C:\Windows\System32\imgres32.dll");将句柄传递给执行重新源加载的函数:
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中打开该文件时,我会看到一个名为Icon的文件夹,其中包含一个id 1002的图像。

当我点击它时,它会显示几个位图图像,以不同的分辨率,包含一个分辨率为16 x 16的位图。但当我打电话的时候
LoadImage(handle, resourceId, IMAGE_BITMAP, 16, 16, 0);这两个参数组合都不起作用,我总是得到错误的1813。
IMAGE_BITMAP是0的常量int集,就像文档化的这里一样,与IMAGE_ICON和IMAGE_CURSOR一样,但它们都不起作用。
我们非常感谢你的帮助。谢谢。
发布于 2016-09-15 10:16:06
您应该在资源Id前面加上#。就这么说吧:
GetImageResource(dll_h, "#1002"); https://stackoverflow.com/questions/39507459
复制相似问题