0

SHGetFileInfoフォルダアイコンを取得するために使用しています。SHGetFileInfo「マイコンピュータ」の特別なフォルダであるCLSIDを呼び出す場合を除いて、すべて正常に動作します::{20D04FE0-3AEA-1069-A2D8-08002B30309D}。その特定のケースではSHGetFileInfoSHFILEINFO.hIcon構造体の呼び出し後の値はゼロです。これはWindows7で発生します。以前のWinXPでは、コードは正常に機能していました。

SHGetFileInfo私が呼び出すために使用するフラグはとなので、派手なものは何もSHGFI_ICONありません。SHGFI_SMALLICON

これの原因は何でしょうか?Windows 7で「マイコンピュータ」アイコンを取得するにはどうすればよいですか?

4

2 に答える 2

0

(アイコン インデックス 15)から直接アイコンを使用ExtractIconExして読み取ることにしました。Win API とは異なり、アイコン リストは変更されないようです :)MyComputershell32.dll

于 2013-04-11T11:06:51.543 に答える
0

最初に SHGetSpecialFolderLocation を使用して「マイ コンピュータ」の PIDL を取得し、次にこの PIDL を SHGetFileInfo の最初のパラメータとして渡す必要があります。

IntPtr pidl;
SHGetSpecialFolderLocation(0, CSIDL_DRIVES, pidl);
SHGetFileInfo(pidl, 0, shinfo, Marshal.SizeOf(shinfo), (SHGFI_PIDL | SHGFI_DISPLAYNAME | SHGFI_ICON | SHGFI_SMALLICON));
于 2013-01-12T12:33:49.260 に答える