C#LoadImage返回错误1813

时间:2016-09-15 09:24:32

标签: c# dll resources

我尝试从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的图片。

enter image description here

当我点击它时,它会显示包含不同分辨率的几个位图图像,其中包含一个分辨率为16 x 16的图像。但是当我打电话时

LoadImage(handle, resourceId, IMAGE_BITMAP, 16, 16, 0);

这不是任何其他参数组合都不起作用,我总是得到错误1813

IMAGE_BITMAP是一个常量int设置为0,与记录的here相同,与IMAGE_ICONIMAGE_CURSOR相同,但它们都不起作用。

非常感谢帮助。感谢。

1 个答案:

答案 0 :(得分:1)

您应该在资源ID前加上#。这样称呼:

GetImageResource(dll_h, "#1002");