请问vb 修改资源文件(即修改字符串表的内容)
VB6.0中有LoadResString方法,却没有对应修改的方法,请教朋友给个思路。问问可不可用StringTable在Dll运行状态存储少量数据(即动态修改Strin...
VB6.0中有LoadResString方法,却没有对应修改的方法,请教朋友给个思路。
问问可不可用String Table在Dll运行状态存储少量数据(即动态修改String Table,是打包发布后,不是开发阶段)。
VB6.0开发的Dll中修改String Table,是在做简单的注册机模块,比如不想将少量的信息写到ini等文件中; 展开
问问可不可用String Table在Dll运行状态存储少量数据(即动态修改String Table,是打包发布后,不是开发阶段)。
VB6.0开发的Dll中修改String Table,是在做简单的注册机模块,比如不想将少量的信息写到ini等文件中; 展开
4个回答
展开全部
只要是标准DLL或EXE,可以使用String Table动态存储数据。
修改思路大致是:1、载入EXE/DLL资源文件;2、计算指定编号字符串的所在组,查找该组字符串表资源;3、读入指定字符串表资源,锁定保护,求得资源大小;4、根据资源长度确定新建/修改字符串数据,新建时按结构建造空内容的字节数组;5、计算字符串实际大小和指针,将修改内容写入动态数组;6、释放EXE/DLL资源文件;7、更新EXE/DLL资源文件,使用API函数BeginUpdateResource \ UpdateResource \ EndUpdateResource;8、根据反馈结果判定修改是否成功。
这里面的难点可能是,在内存中处理数据,就是API函数CopyMemory的使用,注意记录位置和长度的处理。字节数组长度设定可以按一下计算:原始资源总长-(此前长度+指定编号长度单元+指定编号资源原始长度)。
还有,VB6与API中的LoadResString函数是不同的。
用字符串表做简单的注册机,应该够用了。
好几年没玩VB,希望上面的解释可以帮到你。这个模块我以前做过,如果能找到,发给你代码吧。
修改思路大致是:1、载入EXE/DLL资源文件;2、计算指定编号字符串的所在组,查找该组字符串表资源;3、读入指定字符串表资源,锁定保护,求得资源大小;4、根据资源长度确定新建/修改字符串数据,新建时按结构建造空内容的字节数组;5、计算字符串实际大小和指针,将修改内容写入动态数组;6、释放EXE/DLL资源文件;7、更新EXE/DLL资源文件,使用API函数BeginUpdateResource \ UpdateResource \ EndUpdateResource;8、根据反馈结果判定修改是否成功。
这里面的难点可能是,在内存中处理数据,就是API函数CopyMemory的使用,注意记录位置和长度的处理。字节数组长度设定可以按一下计算:原始资源总长-(此前长度+指定编号长度单元+指定编号资源原始长度)。
还有,VB6与API中的LoadResString函数是不同的。
用字符串表做简单的注册机,应该够用了。
好几年没玩VB,希望上面的解释可以帮到你。这个模块我以前做过,如果能找到,发给你代码吧。
展开全部
资源的内容是只读的,是程序员事先安排好的,如果要改变,读入变量之后再改变
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果VB资源编辑器没有被加载,请单击"外接程序",选取"外接管理器"启动外接管理器,然后选中"VB6
资源编辑器",在左下方的"加载行为"中的"加载/卸载"前打钩,点击"确定"退出外接管理器。此时,可以在工具条中看到资源编辑器的绿色图标,单击它就可以启动VB资源编辑器了。
资源编辑器",在左下方的"加载行为"中的"加载/卸载"前打钩,点击"确定"退出外接管理器。此时,可以在工具条中看到资源编辑器的绿色图标,单击它就可以启动VB资源编辑器了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
少量数据的话建议存储到注册表,注册表的操作很简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询