Pergunta

Eu tenho um simples navegador de arquivos e exibição de arquivos e pastas,

obtido por (diretório)

SHFILEINFO info = new SHFILEINFO();
SHGetFileInfo(filename,
FILE_ATTRIBUTE_DIRECTORY,
ref info,Marshal.SizeOf(info),
SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON | SHGFI_ADDOVERLAYS);

Ele funciona 100% bem, mas tenho notado uma coisa - se eu tentar obter um ícone para o diretório, mas especificar FILE_ATTRIBUTE_NORMAL em vez de FILE_ATTRIBUTE_DIRECTORY mas ele faz coisas estranhas para pastas - pastas normais têm o tipo de ficheiro desconhecido "white paper" ícones da lixeira tem VLC ícone, etc.Diretórios sob o SVN tem de sobreposição adequado, mas da base de dados de arquivo de ícone (folha de papel branco).

Eu entendo que o ícone da base para o diretório agora seria o de um arquivo desconhecido, mas por que algumas pastas totalmente estranho ícone?Config.MSI installer ícone da lixeira tem VLC ícone (wtf?!), etc.O que faz a função shell fazer com estes parâmetros?Exatamente o que o ícone não é obter?

Novamente, isso não é um problema, eu só estou curioso.

Foi útil?

Solução

Até onde eu sei o ícone de recursos são acessados pelo índice numérico, então o meu palpite é que o direito de índice é obtido, e o ícone, em seguida, é obtido a partir de a biblioteca errada, ou de um direito, mas usando errado deslocamento+índice correto.

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