Domanda

Ho un semplice browser di file e lì ho visualizzare i file e le cartelle,

ottenuto con (per directory)

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

E funziona al 100% bene, ma ho notato una stranezza - se provo ad ottenere un'icona per directory, ma specificare FILE_ATTRIBUTE_NORMAL invece di FILE_ATTRIBUTE_DIRECTORY ma lo fa cose strane per le directory - cartelle normali hanno "tipo di file sconosciuto carta bianca" icone, cestino ha VLC icona, ecc directory sotto SVN hanno una corretta sovrapposizione, ma icona di file di base (bianco foglio di carta).

Mi rendo conto che l'icona di base per la directory ora sarebbe quello di file sconosciuto, ma perché alcune cartelle hanno totalmente strana icona? Config.msi ha l'icona di installazione, Cestino è VLC icona (WTF ?!), ecc Che cosa fa la funzione di shell che fare con questi parametri? Esattamente quello icona vuol ottenere?

Ancora una volta, questo non è un problema, sono solo curioso.

È stato utile?

Soluzione

Per quanto ne so le risorse icona si accede dal loro indice numerico, quindi la mia ipotesi è che l'indice destro è inverosimile, e l'icona è quindi inverosimile sia dalla libreria di sbagliato, o da quella giusta, ma utilizzando sbagliato di offset + indice corretto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top