将资源从win32 dll嵌入到.net

时间:2010-04-01 09:34:41

标签: .net resources

我使用类treeView。我想用图标创建文件树。我想从shell32.dll中提取一些图标。图标或图像类可以使用res协议。如何知道res协议文件的完整路径?

2 个答案:

答案 0 :(得分:2)

微软严厉地反复警告这种做法。 shell32.dll中的资源是私有实现细节,如有更改,恕不另行通知。假设您要忽略这一点:您可以通过P / Invoking LoadLibrary()获取模块句柄和LoadImage()来获取图标。不幸的是,带有句柄的Icon构造函数是私有的,你必须使用Reflection来调用它。访问pinvoke.net获取声明。

虽然这一切都有效,但这并不是你喜欢维护的优秀代码。 Fwiw,将图标从shell32.dll中取出并将其放入托管资源非常简单。在Visual Studio中,使用File + Open + File并打开shell32.dll。您将获得所有资源的列表,导航到Icons节点。双击一个以查看其中包含的内容,右键单击+导出将其保存到文件中。不知道这是多么合法,图标本身没有版权声明,但shell32.dll确实如此。可能不是。

答案 1 :(得分:0)

我认为如果你想使用它们,你必须从shell32中提取图标。

使用IcoFx(免费软件),您可以从exe和dll中提取图标。