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");