Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提取图标的更好做法是什么?_C#_Winapi - Fatal编程技术网

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

C# 提取图标的更好做法是什么?,c#,winapi,C#,Winapi,我创建了一个资源管理器窗口,在加载文件类型等时扫描目录。当它第一次加载时,我使用 internal static extern uint ExtractIconEx(string szFileName, uint nIconIndex, IntPtr[] phiconLarge, IntPtr[] phiconSmall, uint nIcons); 及 扫描当前注册的图标,然后将它们与im使用的文件关联。它在我的机器上运行良好,但当我在其他机器上运行它时,我会得到一个低资源错误。 所以我的问

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

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

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

也可以使用system.drawing执行此操作

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

(您需要调整此大小以适应较小的外壳大小)

是什么让您认为图标是资源问题的根源?您的程序正在加载多少个图标?有多少是免费的?你能出示相关代码吗?
var icon = System.Drawing.Icon.ExtractAssociatedIcon(@"c:\xxx\some.file");