Загрузка значков из Shell32.dll: дескриптор Win32 недопустим или имеет неправильный тип - PullRequest
1 голос
/ 04 июня 2009

Я получаю некоторые значки из Shell32.dll. Хотя некоторые значки не доступны, и я не могу понять, почему.

Я получаю значок, загружая библиотеку по телефону:

[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string Library);

, а затем получить иконку по телефону:

    [DllImport("User32.dll")]
public static extern IntPtr LoadImage(IntPtr ptr, int intId, uint intType, int iconWidth,  int iconHeight, int loadIcon);

Я отправляю указатель значков получаемого значка, который отлично работает для icpons, таких как значок открытой папки (индекс 5) и значок входа (индекс 45), но когда я пытаюсь получить значки с индексом (71 , 73, 127 и т. Д. И т. Д.) Получаю следующее исключение: Дескриптор Win32, который был передан в Icon, недопустим или имеет неправильный тип

Мне было интересно, знает ли кто-нибудь, почему это происходит? и почему некоторые значки доступны, а другие нет.

Спасибо

1 Ответ

1 голос
/ 04 июня 2009

почему некоторые значки доступны, а другие нет.

Поскольку значки не являются частью публичного договора Shell32.dll.

Вы все равно не должны полагаться на загрузку значков из Shell32.dll. Раймонд Чен объясняет почему, хотя я не могу найти статью.

...