草庐IT

windows - 我怎么知道下一个 SHGetFileInfo (SHGFI_ICON) 调用是否会很慢(对于 exe 文件等)?

我正在写一个文件管理器。当它打开时,用户界面会卡住一段时间。我分析了它,发现慢函数是SHGetFileInfo。SHFILEINFOshinfo;SHGetFileInfo(FullPath.c_str(),NULL,&shinfo,sizeof(shinfo),SHGFI_ICON|SHGFI_LARGEICON))此外,即使有数百个文件夹,该程序运行速度也足够快,但当至少有一个可执行文件时,它会变得非常慢。我认为从这些文件加载​​图标是一项繁重的任务,因为必须加载资源。我看到当Windows资源管理器加载文件夹时,除可执行文件外的所有图标都是正确的,并且可执行文件具有其默认图标(命

python - 如何在 python 中将 SHGetFileInfo 与 SHGFI_PIDL 一起使用

我正在尝试使用SHGetFileInfo检索文件信息(特别是关于图标的信息)。实际上,我没有文件的完整路径,我只有pidl。以下代码返回(0L,(0,0,0,'',''))我的问题是为什么。fromwin32com.shellimportshell,shellcondefget_info():desktop=shell.SHGetDesktopFolder()eaten,desktop_pidl,attr=desktop.ParseDisplayName(None,None,r"C:\Users\Ella\Desktop")returnshell.SHGetFileInfo(deskt

c++ - 如何使用C++获取文件图标

我想使用C++将图标添加到TreeView节点。我想从系统中获取图标,我试过了我试过,PMStringucPath("C:\\path\\to\\file.extension");SHFILEINFOinfo;::SHGetFileInfo(ucPath.GrabTString(),FILE_ATTRIBUTE_NORMAL,&info,sizeof(info),SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_SMALLICON);iconView->SetRsrcID((RsrcID)info.hIcon);::DestroyIcon(info.hI

c# - 如何使用 Shell32.SHGetFileInfo 在 Windows 7 上获取文件夹图标

我有以下适用于WindowsXP和Vista的代码-32位和64位:publicstaticIconGetFolderIcon(IconSizesize,FolderTypefolderType){//Needtoaddsizecheck,althougherrorsgeneratedatpresent!uintflags=Shell32.SHGFI_ICON|Shell32.SHGFI_USEFILEATTRIBUTES;if(FolderType.Open==folderType){flags+=Shell32.SHGFI_OPENICON;}if(IconSize.Small==

c++ - 获取常见文件类型的图标

我想在我的dll中获取常见文件类型的图标。我正在使用VC++。我只有文件的文件扩展名和MIME类型,我想根据这些信息获取文件的图标。有人可以告诉我该怎么做吗?(vc++中可用的方法需要用户给出需要图标的文件的路径。我无权访问任何此类文件)谢谢。 最佳答案 外壳API您可以通过调用SHGetFileInfo()从shell中获取它们连同SHGFI_USEFILEATTRIBUTES标志-此标志允许例程在不需要传入的文件名实际存在的情况下工作,因此如果您有文件扩展名,只需组成一个文件名,附加扩展名,然后传递它中。通过组合其他标志,您将能