3

シンプルなファイル ブラウザがあり、そこにファイルとフォルダを表示します。

(ディレクトリ用)によって取得

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

100% 正常に動作しますが、奇妙な点に気付きました。ディレクトリのアイコンを取得しようとして、FILE_ATTRIBUTE_DIRECTORY の代わりに FILE_ATTRIBUTE_NORMAL を指定すると、ディレクトリに対して奇妙なことが行われます。通常のフォルダには「不明なファイル タイプのホワイト ペーパー」アイコンがあり、リサイクルします。 bin には VLC アイコンなどがあります。SVN の下のディレクトリには適切なオーバーレイがありますが、ベース ファイル アイコン (白い紙) があります。

ディレクトリの基本アイコンが不明なファイルのアイコンになることは理解していますが、一部のフォルダにまったく奇妙なアイコンが付いているのはなぜですか? Config.MSI にはインストーラー アイコンがあり、ごみ箱には VLC アイコン (wtf?!) などがあります。シェル関数はこのパラメーターで何をしますか? 正確にはどのアイコンを取得しますか?

繰り返しますが、これは問題ではありません。ただ興味があるだけです。

4

1 に答える 1

1

私の知る限り、アイコンリソースは数値インデックスによってアクセスされるため、正しいインデックスがフェッチされ、アイコンは間違ったライブラリから、または正しいライブラリから間違ったオフセット+正しいインデックスを使用してフェッチされると思います。

于 2010-03-23T15:20:37.557 に答える