Carregando ícones de Shell32.dll: Win32 identificador não é válido ou é o tipo errado

StackOverflow https://stackoverflow.com/questions/949196

  •  09-09-2019
  •  | 
  •  

Pergunta

Estou recebendo alguns ícones do Shell32.dll. Althought alguns dos ícones não parecem estar disponível, e eu não consigo entender o porquê.

Estou recebendo o ícone por carregar a biblioteca chamando:

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

e, em seguida, recebendo o ícone chamando:

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

Eu envio no índice ícone do ícone que eu estou recebendo, o que funciona bem para icpons como o Folder Icon Open (índice 5) eo ícone de login (índice 45), mas quando eu tentar obter ícones no índice (71 , 73, 127, etc. etc.) recebo a seguinte exceção: Win32 identificador que foi passado para Ícone não é válido ou é o tipo errado

Eu queria saber se alguém sabia porque isso estava acontecendo? e por alguns dos ícones são acessíveis e outros não aparecem.

Graças

Foi útil?

Solução

porque alguns dos ícones são acessíveis e outros não aparecem.

Uma vez que os ícones não são parte do contrato público de Shell32.dll.

Você não deve confiar em ícones de carregamento de Shell32.dll de qualquer maneira. Raymond Chen explica por que, apesar de eu não encontrar o artigo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top