我在哪里可以find用于文件夹和应用程序的默认图标?

我试图加载浏览器显示的默认HICON:

  • 打开的文件夹
  • 一个没有embedded默认图标的exe文件。 这也可以在“添加/删除程序”或“程序和function”中看到,因为它是在Vista上调用的。

你知道这些可以find的地方吗? 我认为文件夹图标可能在explorer.exe的资源。 但不知道默认的应用程序图标可以从中检索。

另外,你是否有任何代码可以将它们加载到HICON中。

我真的需要这个工作在多个Windows操作系统:2000,XP,Vista,2008


感谢你目前的帮助。 我在Vista上,并通过Shell32.dll查看。 在那里我没有看到一个图标,它和浏览器中的应用程序显示的默认图标相同。 我可能会错过它 – 有278个图标可以查看 – 它绝对在那里,还是有一些其他位置,我应该看看?

Solutions Collecting From Web of "我在哪里可以find用于文件夹和应用程序的默认图标?"

我认为他们在%windir%\ system32 \ SHELL32.dll

在互联网上找到一些代码,试试看是否可行:

HINSTANCE hDll; hDll = LoadLibrary ( "SHELL32.dll" ); wincl.hIcon = LoadIcon (hDll , MAKEINTRESOURCE ( 1 )); wincl.hIconSm = LoadIcon (hDll, MAKEINTRESOURCE ( 2 )); 

编辑:Windows在“moricons.dll”中有更多的图标,但我认为文件和文件夹图标应该都在shell32.dll中。 提醒一下,Vista中的图标具有不同的分辨率,高达256×256,因此,您所看到的分辨率为32×32的图标可能会与完全分辨率版本的图标看起来不同。

使用SHGetFileInfo API。

 SHFILEINFO sfi; SecureZeroMemory(&sfi, sizeof sfi); SHGetFileInfo( _T("Doesn't matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof sfi, SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); 

会让你的文件夹图标的图标句柄。

要获得“打开”图标(即文件夹显示为打开的图标),还要将最后一个参数中的SHGFI_OPENICON传递给SHGetFileInfo()。

[编辑]

忽略所有的答案,告诉你在注册表中捅了捅! 因为这不能可靠地工作,将显示错误的图标,如果他们定制/皮肤,并可能无法在未来的Windows版本。 此外,如果你从系统dll / exes中提取图标,则可能会因为受版权保护而陷入法律纠纷。

Vista添加了SHGetStockIconInfo等NT6 +的最佳方式。 在较老的平台上,像Stefan说的SHGetFileInfo。

如果你想使用未公开的东西,系统图像列表中的前5个左右的图标包括默认的文件夹和应用程序图标(系统图像列表不在NT上共享,但由于某种原因,所有的副本得到前5个左右图标没有要求他们与SHGetFileInfo)这些默认图标默认情况下来自shell32.dll,但可以在注册表中更改(HKLM \ SOFTWARE \微软\的Windows \ CurrentVersion \资源管理器\壳牌图标)

在Visual Studio中:

  1. 点击File | Open
  2. 选择C:\ WINDOWS \ System32 \ Shell32.dll

VS将使用资源管理器打开文件。 现在您可以查看shell32.dll中嵌入的所有图标和其他资源。

用户选择的图标可以在HKEY_CLASSES_ROOT\Folder\DefaultIcon的注册表中找到

通过查看这里的价值,如果他们出于任何原因改变了它,你也会接受。

对于desktop.ini文件存在的文件夹,您需要读取IconFileIconIndex条目。

如果你在MFC中,下面的代码加载图标应该工作。


     HICON hicon;
     hicon = LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));   

在上面的例子中,AfxGetResourceHandle()是使用MFC的唯一的东西,否则LoadIcon是一个API调用,据我所知。

图标在Windows \ system32 \ shell32.dll中可用

如果您安装了visual studio,那么Visual Studio也会附带一组图标,如“C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ VS2008ImageLibrary”

这可能是在explorer.exe中。

只要用资源黑客打开shell32.dll,右键点击“图标”,将所有的图标资源保存到一个目录中即可。

并且您将获得该目录中的所有Windows默认图标。

[链接] http://www.angusj.com/resourcehacker/%5B/link%5D