提取图标的更好做法是什么?

发布于 2024-11-09 11:55:30 字数 441 浏览 0 评论 0原文

我创建了一个资源管理器窗口,它在加载时扫描目录中的文件类型等。当它第一次加载时,我使用

internal static extern uint ExtractIconEx(string szFileName, uint nIconIndex, IntPtr[] phiconLarge, IntPtr[] phiconSmall, uint nIcons);

internal static unsafe extern int DestroyIcon(IntPtr hIcon);

扫描当前注册的图标,然后将它们与我使用的文件关联起来。它在我的机器上运行良好,但当我在其他机器上运行它时,我收到低资源错误。 所以我的问题是更好的做法是什么?按照我的方式,将它们全部加载,或者每次我需要枚举一个目录来查找文件类型并将其关联起来。

I have created an explorer window that scans the directories upon loading for filetypes, etc. when it first loads, i use

internal static extern uint ExtractIconEx(string szFileName, uint nIconIndex, IntPtr[] phiconLarge, IntPtr[] phiconSmall, uint nIcons);

and

internal static unsafe extern int DestroyIcon(IntPtr hIcon);

to scan for currently registered icons and then i associate them with teh files im using. it works fine on my machine but when i run it on others, i get a low resource error.
so my question is what is a better practice? to go the way that i am, and load them all up, or everytime i need to enumerate a directory to look for the filetype and associate it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒绊 2024-11-16 11:55:30

作为替代方案,您可以使用 system.drawing 来完成此操作

var icon = System.Drawing.Icon.ExtractAssociatedIcon(@"c:\xxx\some.file");

(您需要根据小外壳尺寸调整其大小)

As an alternative you could do this with system.drawing

var icon = System.Drawing.Icon.ExtractAssociatedIcon(@"c:\xxx\some.file");

(You would need to resize this for the small shell size)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文