从 DLL 中获取图标
我从第三方库获取以下内容(一个示例):
@%SystemRoot%\SomePath\SomeFile.Dll,-203
我从上下文中知道这是一个图标。 我的问题是,我将如何获取这些“地址”并实际提取数据?
与此相关的是,我还想知道从普通 EXE 中提取显示的(从 shell 中)图标的最佳方法。
我正在使用 C# 工作,但我也可以使用 C 或 C++ 示例。
I'm getting the following from a third party library (one example):
@%SystemRoot%\SomePath\SomeFile.Dll,-203
I know from context that this is an icon. My question is, how would I take these "addresses" and actually pull out the data?
On a related note, I'd also like to know the best way to pull the displayed (from the shell) icon out of a vanilla EXE.
I'm working in C#, but I can work with C or C++ examples just as well.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于 EXE,您应该调用 SHGetFileInfo API 函数并表明您需要该图标。 此函数将检查提供图标的所有不同方式(在文件中、通过 shell 扩展等)。
对于从第三方库获取的内容,您可以调用 ExtractIconEx API 函数并传递文件名(第一部分)和索引(第二部分)。
With an EXE, you should call the SHGetFileInfo API function and indicate that you want the icon. This function will check all the different ways that an icon can be provided (in the file, through shell extensions, etc, etc).
For what you are getting from the third party library, you can call the ExtractIconEx API function passing the name of the file (the first part) and the index (the second part).
如果您使用reflector,您可以准确地看到物品的存储位置。 (如果它是兼容的 dll)。 它过去帮助我获得了嵌入式资源。
If you use reflector you can see exactly where the things are stored. (If its a compatable dll). It's helped me in the past get to emedded resources.