- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SHGetFileInfo
获取特定文件类型的图标。 MSDN 对 SHFILEINFO
说:
hIcon Type: HICON A handle to the icon that represents the file. You are responsible for destroying this handle with DestroyIcon when you no longer need it.
要从 HIcon 获取图标,我使用 Icon.FromHandle
。同样,MSDN 说:
Remarks
When using this method, you must dispose of the original icon by using the DestroyIcon method in the Win32 API to ensure that the resources are released.
由于 SGHFI_ICON
描述包含以下信息,因此更加令人困惑:
SHGFI_ICON (0x000000100) Retrieve the handle to the icon that represents the file and the index of the icon within the system image list. The handle is copied to the hIcon member of the structure specified by psfi, and the index is copied to the iIcon member.
从这个描述来看,句柄似乎由操作系统保留,我实际上不应该破坏它。
我的问题是:如果是的话,我应该什么时候处理图标句柄?
Icon.FromHandle()
之后?Icon.FromHandle()
创建的图标时? (在这种情况下,我想我宁愿复制图标,释放原始图标并返回副本以避免句柄泄漏)最佳答案
系统不保留图标句柄,它保留图像列表。当您使用 SHGFI_ICON
标志时,SHGetFileInfo
通过针对系统图像列表调用 ImageList_GetIcon
创建一个图标。您可以通过传递 SHGFI_SYSICONINDEX
标志而不是仅检索图标索引来自己执行此操作。
图标应该在你用完后销毁。
关于shell - 在 SHGetFileInfo 之后销毁图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437939/
我有一个很好的技术来获取当前系统中的关联扩展/图像(因为扩展可以从一个系统到另一个系统有不同的图像)。这是函数: public static Icon getIconFromFile(string e
我有一个简单的文件浏览器,我在那里显示文件和文件夹, 获得者(对于目录) SHFILEINFO info = new SHFILEINFO(); SHGetFileInfo(filename, FIL
以下是有关 SHGetFileInfo() 函数的 Windows 文档的摘录: You should call this function from a background thread. Fai
出于某种原因,为 .lnk 文件调用 SHGetFileInfo 会返回带有链接覆盖的图标,即使我没有请求它也是如此: Shell.SHGetFileInfo(path, 0, ref shFileI
我正在尝试为任何文件获取一个图标(如 HICON),以与资源管理器完全相同的方式绘制它。这意味着如果我有一个 exe 文件的路径,我应该绘制它的默认图标。如果我有一个链接 (.lnk) 文件,我必须绘
我正在使用 SHGetFileInfo 获取特定文件类型的图标。 MSDN 对 SHFILEINFO 说: hIcon Type: HICON A handle to the icon t
我在 Windows 10 专业版和 Visual Studio 2013 上,我正在使用 SHGetFileInfoW获取文件类型的图标位置(路径 + 索引): std::wstrin
这是我做的: LPMALLOC malloc; LPITEMIDLIST pidl; SHFILEINFO FileInfo; SFGAOF sfGao; if (SUCCEEDED(SHGetMal
function GetFileIcon(const filename:string): HICON; var shfi: TShFileInfo; begin try FillCha
我正在使用 cmake + nmake 构建 exe,我想从可执行文件本身获取图标句柄。 CMakeLists.txt: add_executable(test test.cpp test.rc) 测
在 .NET 4.0 应用程序 (WPF) 中,我们使用 SHGetFileInfo 获取目录树的 shell 图标。由于在某些情况下这需要相当长的时间(即对于无法访问的网络驱动器或软盘驱动器),我们
Context:目前在VisualStudio2012中开发/维护的程序,用VB(.NET)编写,针对Framework v3.5。我们的大多数客户都安装了荷兰语 Windows,并且大多数客户将其区
我尝试使用 JNA 将 SHGetFileInfo 函数从 Shell32 翻译成 Java,并使用了 C# 代码和 this作为引用 虽然在 C# 代码中 psfi.iIcon 是 432,但在我翻
我正在写一个文件管理器。当它打开时,用户界面会卡住一段时间。我分析了它,发现慢函数是 SHGetFileInfo。 SHFILEINFO shinfo; SHGetFileInfo(FullPath.
我正在尝试使用 SHGetFileInfo 检索文件信息(特别是关于图标的信息)。实际上,我没有文件的完整路径,我只有 pidl。 以下代码返回 (0L, (0, 0, 0, '', '')) 我的问
我有以下适用于 Windows XP 和 Vista 的代码 - 32 位和 64 位: public static Icon GetFolderIcon(IconSize size, FolderT
我正在使用 C#、Windows Forms、Net 2.0。 我正在使用 SHGetImageList 获取系统图像列表,比方说,SHIL_JUMBO 参数并在 Windows 7 上获取 256x
我是一名优秀的程序员,十分优秀!