社区
C++ 语言
帖子详情
获取其它程序exe/dll中的资源字符串.
gdami
2008-06-18 12:03:24
我们需要用C++编程获取native和managed 执行文件中的资源字符串, 主要是测试用。
我们已知能用loadresource等API获取native文件中的资源。 .Net中能用ResourceManager获取managed文件中的资源。
但现在有个问题,能不能用C++实现用API获取managed文件中的资源字符串? 或者是否能用读取Managed文件结构的方式读取出资源字符串来?
...全文
294
7
打赏
收藏
获取其它程序exe/dll中的资源字符串.
我们需要用C++编程获取native和managed 执行文件中的资源字符串, 主要是测试用。 我们已知能用loadresource等API获取native文件中的资源。 .Net中能用ResourceManager获取managed文件中的资源。 但现在有个问题,能不能用C++实现用API获取managed文件中的资源字符串? 或者是否能用读取Managed文件结构的方式读取出资源字符串来?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gdami
2008-06-23
打赏
举报
回复
没人有建议了? 没找到答案阿。
gdami
2008-06-18
打赏
举报
回复
那请问有啥建议没?
.Net文件结构刚找到一篇文章 http://www.codeproject.com/KB/dotnet/dotnetformat.aspx。 不过只是.net 2.0的。 现在都有.net1.1,2.0,3.0,3.5了,微软更新也忒快,如果按文件结构也有的搞的。
珍惜生命远离CPP
2008-06-18
打赏
举报
回复
[Quote=引用 2 楼 gdami 的回复:]
如果有必要,还是API比较方便,用文件结构太复杂了,怕有稳定性问题。.Net1.1和.Net2.0,3.0的文件结构也不知道有变化没,也没可参考的例子。
咱也不知道用C++怎么模拟.Net中ResourceManager类和反射等东东。
[/Quote]
1.1 2.0 3.0编译出来的程序互不兼容。所以说很有可能文件结构上变化了。
至于中ResourceManager类和反射等东东,这个工作量不小,要使能搞定,在加点时间说不定.net虚拟机都搞出来了。
gdami
2008-06-18
打赏
举报
回复
如果有必要,还是API比较方便,用文件结构太复杂了,怕有稳定性问题。.Net1.1和.Net2.0,3.0的文件结构也不知道有变化没,也没可参考的例子。
咱也不知道用C++怎么模拟.Net中ResourceManager类和反射等东东。
珍惜生命远离CPP
2008-06-18
打赏
举报
回复
答案是可以的,但你需要知道managed文件的格式信息。
gdami
2008-06-18
打赏
举报
回复
这个就是用类似LoadResource的API获取Native执行文件的,不能获取Managed的。 我现在需要知道有用API获取Managed执行文件内的资源字符串的方法,已经查了很久了,没找到方法。
chenyu2202863
2008-06-18
打赏
举报
回复
我这里有个获取图标的,借鉴下吧
EnumProcesses 得到所有进程ID,然后循环
OpenProcess 打开进程
GetModuleFileName 获取EXE文件路径
LoadLibrary 载入EXE文件
EnumResourceNames 查出第1个图标名称(需要一个回调函数)
LoadIcon 载如图标 Add图标到CImageList
InsertItem 添加项目到CListCtrl
FreeLibrary 释放EXE文件
CloseHandle 关闭进程
继续循环
关于
exe
或
dll
文件
中
的
字符串
资源
资源
在WindowsGUI的
程序
中
随处可见,这也是微软为了方便把界面和逻辑分开的优秀策略。所谓的
资源
就是一些用于描述界面或其他特征的说明性字符,它们有固定的格式。这点与HTML有相似之处。而微软提供了处理这些
资源
描述字符的函数,并上升到Win32API的高度。
资源
有两种存在形式,一是编译之前,此时的
资源
被存放到.rc文件(此文件为纯文本文件)
中
,在
程序
编译的时候,
资源
编译器rc.
exe
把.rc文件
Dll
与
exe
的区别及使用详解
DLL
(Dynamic Link Library,动态链接库)和
EXE
(
Exe
cutable, 可执行文件)是两种不同类型的文件格式,主要用于不同的目的。
DLL
中
虽然包含了可执行代码却不能单独执行,而应由Windows应用
程序
直接或间接调用。由于
DLL
能被应用
程序
动态载入内存。所以,应用
程序
可以在需要时才将
DLL
载入到内存
中
,这让
程序
的可维护性变得很高。比如QQ的视频功能需要升级,那么负责编写QQ的
程序
员不必将QQ所有代码都重写,只需将视频功能相关的
DLL
文件重写即可。
将
DLL
嵌入
EXE
的
资源
文件调用方法
动态链接库(Dynamic Link Library,简称
DLL
)是包含可由多个
程序
同时使用的代码和数据的库。它们是Windows操作系统的核心组件之一,能够使得
程序
共享相同的代码和
资源
,从而节省内存空间并提高运行效率。
DLL
的概念起源于1980年代,随着Windows操作系统的普及,
DLL
成为
程序
模块化和复用的主要方式。
dll
与
exe
的区别
DLL
中
虽然包含了可执行代码却不能单独执行,而应由Windows应用
程序
直接或间接调用。 所谓静态链接是指把要调用的函数或者过程链接到可执行文件
中
,成为可执行文件的一部分。换句话说,函数和过程的代码就在
程序
的
exe
文件
中
,该文件包含了运行时所需的全部代码。当多个
程序
都调用相同函数时,内存
中
就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存
资源
。 动态链接所调用的函数代码并没有被拷贝到应用程...
在Visual Studio
中
将
dll
以
资源
的形式嵌入
exe
中
一、
Dll
的优点: 1、扩展应用
程序
的特性 2、简化项目管理 3、有助于节省内存 4、促进
资源
的共享 5、促进本地化 6、有助于解决平台间的差异 7、可用于特殊目的 有关于
dll
及注入相关理论资料,可参考《Windows核心编程5》第四部分(19-22章)。 二、做
dll
注入时遇到的坑 环境:VS2013
dll
功能:弹出对话框、cmd调用命令打开word文档
exe
功能:注入
dll
...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章