C# LoadImage возвращает ошибку 1813

Я пытаюсь загрузить изображение из 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 Studio, я вижу папку с именем Icon содержащий изображение с идентификатором 1002,

Когда я щелкаю по нему, он показывает мне несколько растровых изображений, содержащихся в разных разрешениях, содержащих одно с разрешением 16 x 16, Но когда я звоню

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

Ни это, ни какое-либо другое сочетание параметров не работает, я всегда получаю ошибку 1813,

IMAGE_BITMAP константа int установлена ​​в 0 как описано здесь, то же самое с IMAGE_ICON а также IMAGE_CURSOR но ни один из них не работает.

Помощь очень ценится. Благодарю.

1 ответ

Решение

Вы должны поставить префикс Id ресурса с #. Назовите это так:

GetImageResource(dll_h, "#1002"); 
Другие вопросы по тегам